概要
フィルタ woocommerce_shipping_$this->id_is_available
は、WooCommerce における送料の利用可能性を制御するために使用されます。このフィルタを用いることで、特定の条件下における送料オプションの可用性を動的に変更することが可能になります。以下は、このフィルタがよく使われる機能の例です。
- 特定の地域に対する送料の制限
- ショッピングカートの内容による送料の変更
- ユーザーのログイン状態による送料の調整
- 特定の商品に基づく送料の制御
- プロモーションやクーポンに基づく送料の変更
- 送料設定のカスタマイズ
構文
add_filter( 'woocommerce_shipping_$this->id_is_available', 'your_function', 10, 2 );
パラメータ
$available
(bool) – 利用可能かどうかのブール値。$package
(array) – 配送パッケージの情報を含む配列。
戻り値
- フィルタ処理後の新しい利用可能性(ブール値)。
WooCommerce のバージョン
このフィルタは WooCommerce バージョン 2.0.0 以降で使用可能です。
WordPress のバージョン
WordPress バージョン 4.0 以降で使用可能です。
サンプルコード
サンプルコード 1: 地域に基づいて送料を制限する
add_filter( 'woocommerce_shipping_flat_rate_is_available', 'restrict_shipping_for_specific_region', 10, 2 );
function restrict_shipping_for_specific_region( $available, $package ) {
if ( $package['destination']['state'] === 'NY' ) {
return false; // NY にはこの配送方法を提供しない
}
return $available;
}
このコードは、配送先の州がニューヨークの場合、フラットレートの送料オプションを利用不可にします。
サンプルコード 2: カートの合計金額によって送料を変更
add_filter( 'woocommerce_shipping_free_is_available', 'conditional_free_shipping', 10, 2 );
function conditional_free_shipping( $is_available, $package ) {
if ( WC()->cart->total < 50 ) {
return false; // 合計金額が50ドル未満の場合、無料送料は利用不可
}
return $is_available;
}
このコードは、カートの合計が50ドル未満の場合、無料送料のオプションを非表示にします。
サンプルコード 3: ユーザーのログイン状態を確認
add_filter( 'woocommerce_shipping_flat_rate_is_available', 'check_user_logged_in', 10, 2 );
function check_user_logged_in( $available, $package ) {
if ( ! is_user_logged_in() ) {
return false; // ログインしていない場合、フラットレート配送は不可
}
return $available;
}
このコードは、ユーザーがログインしていない場合、フラットレートの送料オプションを利用不可にします。
サンプルコード 4: 特定の商品に基づく送料の制御
add_filter( 'woocommerce_shipping_flat_rate_is_available', 'control_shipping_based_on_product', 10, 2 );
function control_shipping_based_on_product( $available, $package ) {
foreach ( $package['contents'] as $item ) {
if ( $item['product_id'] === 123 ) {
return false; // 商品ID 123 が含まれている場合、送料は利用不可
}
}
return $available;
}
このコードは、特定の商品がカートに含まれている場合、フラットレート送料を利用不可にします。
サンプルコード 5: クーポン使用による送料変更
add_filter( 'woocommerce_shipping_free_is_available', 'modify_shipping_with_coupon', 10, 2 );
function modify_shipping_with_coupon( $is_available, $package ) {
if ( WC()->cart->has_discount( 'FREESHIP' ) ) {
return true; // FREESHIP クーポンが適用されている場合、無料配送を利用可能に
}
return $is_available;
}
このコードは、特定のクーポンが適用されている場合、無料配送の利用を許可します。
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |