概要
woocommerce_shipping_method_add_rate_args
フィルタは、WooCommerceの配送方法に関する情報をカスタマイズするためのフックです。このフィルタを使用することで、配送オプションの表示名、料金、税金、クラス、手数料などを変更できます。以下の機能を実装する際によく使われます:
- 配送方法の表示名を条件に応じて変更
- 配送料金の条件を設定して異なる料金を適用
- 特定の条件に基づいて配送料の割引を提供
- 追加の手数料を特定の配送方法に追加
- カスタムの税クラスを使用した柔軟な課税設定
- 特定のユーザーやカートの内容に応じた設定の調整
構文
add_filter( 'woocommerce_shipping_method_add_rate_args', 'custom_function_name', 10, 2 );
パラメータ
$args
(配列): 配送メソッドに関する設定情報が含まれる配列。$instance
(オブジェクト): 配送メソッドのインスタンス。
戻り値
- 配送メソッドの設定情報が含まれる配列(変更後)。
使用可能なプラグインバージョン
- WooCommerce: バージョン 2.6 以降
- WordPress: バージョン 4.0 以降
サンプルコード
サンプルコード1: 配送方法の表示名を変更
add_filter( 'woocommerce_shipping_method_add_rate_args', 'change_shipping_method_name', 10, 2 );
function change_shipping_method_name( $args, $instance ) {
if ( $args['method_id'] === 'flat_rate' ) {
$args['label'] = '特別な配送方法';
}
return $args;
}
このコードは、’flat_rate’ の配送方法の表示名を「特別な配送方法」に変更します。
引用元: https://woocommerce.com/
サンプルコード2: 配送料金に割引を追加
add_filter( 'woocommerce_shipping_method_add_rate_args', 'apply_discount_on_shipping', 10, 2 );
function apply_discount_on_shipping( $args, $instance ) {
if ( WC()->cart->total > 100 ) {
$args['cost'] = $args['cost'] * 0.90; // 10%割引
}
return $args;
}
このコードは、カート合計が100ドルを超えた場合、配送料金に10%の割引を適用します。
引用元: https://woocommerce.com/
サンプルコード3: 追加手数料の設定
add_filter( 'woocommerce_shipping_method_add_rate_args', 'add_handling_fee', 10, 2 );
function add_handling_fee( $args, $instance ) {
$args['cost'] += 5; // 手数料5ドルを追加
return $args;
}
このコードは、すべての配送方法に対して5ドルの手数料を追加します。
引用元: https://woocommerce.com/
サンプルコード4: 特定の顧客へのカスタム税クラス
add_filter( 'woocommerce_shipping_method_add_rate_args', 'set_custom_tax_class', 10, 2 );
function set_custom_tax_class( $args, $instance ) {
if ( is_user_logged_in() && current_user_can( 'premium_member' ) ) {
$args['tax_class'] = 'プレミアム'; // プレミアムユーザー向けの税クラス
}
return $args;
}
このコードは、プレミアム会員のユーザーにカスタム税クラスを設定します。
引用元: https://woocommerce.com/
サンプルコード5: 一定の条件でのカスタム配送方法の追加
add_filter( 'woocommerce_shipping_method_add_rate_args', 'conditional_custom_shipping_methods', 10, 2 );
function conditional_custom_shipping_methods( $args, $instance ) {
if ( $args['method_id'] === 'free_shipping' && WC()->cart->total < 50 ) {
$args['cost'] = 10; // フリーシッピング条件を満たしていない場合、10ドルを設定
}
return $args;
}
このコードは、カートの合計が50ドル未満の場合、’free_shipping’ メソッドへ10ドルを設定します。
引用元: https://woocommerce.com/
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
以上が woocommerce_shipping_method_add_rate_args
フィルタの詳細な解説とサンプルコードです。このフィルタを活用することで、WooCommerceの配送オプションをより柔軟にカスタマイズできます。