概要
woocommerce_shipping_rate_id
フィルタは、WooCommerceの配送オプションに関連するデータを操作する際に使用されるフックです。このフィルタを利用することで、配送方法のIDを変更したり、特定の条件に基づいて配送オプションをカスタマイズしたりすることができます。具体的には以下のような機能を実装する際に用いられます。
- 特定のウィッシュリスト商品に対する送料の調整
- 多段階の送料設定を実装
- 地域ごとの送料計算をカスタマイズ
- 特定のユーザーグループに対する特別な送料を設定
- カート商品に基づく送料の自動調整
- イベントやプロモーションに基づく一時的な送料設定
構文
add_filter('woocommerce_shipping_rate_id', 'custom_function_name', 10, 2);
パラメータ
string
$rate_id (変更前の配送オプションのID)array
$shipping_rate (配送オプションの詳細情報)
戻り値
string
変更後の配送オプションのID
使用可能なプラグインWooCommerceのバージョン
- WooCommerce 3.0以上
使用可能なワードプレスのバージョン
- WordPress 5.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: 配送オプションIDのカスタマイズ
add_filter('woocommerce_shipping_rate_id', 'change_shipping_rate_id', 10, 2);
function change_shipping_rate_id($rate_id, $shipping_rate) {
// 送料をカスタマイズするロジック
if ($shipping_rate['method_id'] === 'flat_rate') {
$rate_id .= '-custom';
}
return $rate_id;
}
このコードは、flat_rate
メソッドで配送料が計算されている場合、配送オプションのIDの後ろに -custom
を追加します。これにより、カスタムの送料設定が行いやすくなります。
サンプル2: 条件に基づく配送オプションの変更
add_filter('woocommerce_shipping_rate_id', 'conditional_shipping_rate_id', 10, 2);
function conditional_shipping_rate_id($rate_id, $shipping_rate) {
if (WC()->cart->subtotal > 100) {
return 'free_shipping';
}
return $rate_id;
}
このコードは、カート内の合計金額が100ドルを超えた場合、配送オプションのIDを free_shipping
に変更します。これにより、一定の条件を満たすと送料無料になります。
サンプル3: 特定のカテゴリーに基づく配送オプションの調整
add_filter('woocommerce_shipping_rate_id', 'category_based_shipping', 10, 2);
function category_based_shipping($rate_id, $shipping_rate) {
if (has_term('special-category', 'product_cat')) {
return 'discounted_rate';
}
return $rate_id;
}
このコードは、特定のカテゴリー special-category
の商品がカートにある場合、配送オプションIDを discounted_rate
に変更します。特別な配送料金が適用されます。
サンプル4: 複数の配送方法を統合
add_filter('woocommerce_shipping_rate_id', 'combine_shipping_methods', 10, 2);
function combine_shipping_methods($rate_id, $shipping_rate) {
if ($shipping_rate['method_id'] === 'local_pickup') {
$rate_id = 'pickup_and_delivery';
}
return $rate_id;
}
このコードは、local_pickup
を選択した際に、配送オプションIDを pickup_and_delivery
に変更し、ピックアップと配送の選択肢を統合します。
サンプル5: 特定のユーザーに基づく送料の変更
add_filter('woocommerce_shipping_rate_id', 'user_based_shipping_modification', 10, 2);
function user_based_shipping_modification($rate_id, $shipping_rate) {
if (is_user_logged_in() && current_user_can('subscriber')) {
$rate_id = 'subscriber_rate';
}
return $rate_id;
}
このコードは、ログインしているユーザーが subscriber
の場合に配送オプションのIDを subscriber_rate
に変更します。特定のユーザーグループに特別な料金が適用されます。