概要
woocommerce_shipping_rate_method_id
フィルタは、WooCommerceの配送方法に関連する機能をカスタマイズする際に使用されるフックです。このフィルタは、配送オプションのIDを変更したり、特定の条件に基づいて配送方法を制御するのに役立ちます。例えば、特定の製品の種類に基づいて異なる配送方法を提供したり、特定の顧客グループ向けに特別な配送オプションを表示したりする場合によく使われます。また、条件付き配送や地域限定の配送方法の実装にも利用されます。
主な機能実装例:
1. 特定の製品に基づく配送方法の制御
2. ユーザーのロールに基づいた配送オプションの変更
3. 地域ごとに異なる配送方法の提供
4. 特定の割引やプロモーションに基づく配送条件の設定
5. 複数の配送方法の統合管理
6. カスタマイズされた配送メッセージの表示
構文
add_filter( 'woocommerce_shipping_rate_method_id', 'custom_shipping_rate_method_id', 10, 2 );
パラメータ
$method_id
(string) – 現在の配送方法のID$rate
(object) – 現在の配送レートオブジェクト
戻り値
- 変更された配送方法のID (string)
対応バージョン
- WooCommerce: 2.0以上
- WordPress: 4.0以上
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |
サンプルコード1
add_filter( 'woocommerce_shipping_rate_method_id', function( $method_id, $rate ) {
if ( is_user_logged_in() && current_user_can( 'premium_member' ) ) {
return 'premium_' . $method_id;
}
return $method_id;
});
このコードは、プレミアムメンバーとしてログインしているユーザーに、配送方法IDに「premium_」を付加することにより、特別な配送オプションを提供します。
サンプルコード2
add_filter( 'woocommerce_shipping_rate_method_id', function( $method_id, $rate ) {
if ( !is_admin() && $rate->cost > 50 ) {
return 'expedited_shipping';
}
return $method_id;
});
このコードは、管理画面以外で、配送コストが50を超える場合に「expedited_shipping」というIDを返します。これにより、特急配送オプションを適用できます。
サンプルコード3
add_filter( 'woocommerce_shipping_rate_method_id', function( $method_id, $rate ) {
if ( isset( $rate->instance_id ) && $rate->instance_id == 'flat_rate' ) {
return 'flat_rate_' . $rate->method_id;
}
return $method_id;
});
このコードは、配送メソッドがフラットレートの場合、そのIDに「flat_rate_」を追加して返します。これにより、異なるフラットレートメソッドを区別できます。
サンプルコード4
add_filter( 'woocommerce_shipping_rate_method_id', function( $method_id, $rate ) {
if ( 'local_pickup' === $method_id ) {
return 'local_pickup_' . $rate->instance_id;
}
return $method_id;
});
このコードは、配送方法が「local_pickup」の場合、そのIDにインスタンスIDを付加した形で返します。これにより、異なるローカルピックアップオプションを管理できます。
サンプルコード5
add_filter( 'woocommerce_shipping_rate_method_id', function( $method_id, $rate ) {
if ( $rate->cost < 10 ) {
return 'free_shipping';
}
return $method_id;
});
このコードは、配送コストが10未満の場合に「free_shipping」というIDを返すことで、無料配送を適用します。これにより、特定の条件で無料配送オプションを提供できます。
各サンプルコードの詳細はそれぞれのWooCommerceフックのドキュメントを参照してご確認ください。