概要
wc_shipping_enabled
フィルタは、WooCommerceにおける配送機能の有効化状態を制御するために使用されます。このフィルタを利用することで、特定の条件下で配送方法が利用可能であるかどうかを判断するロジックを実装できます。以下は、このフィルタがよく使われる機能の例です。
- 特定の地域への配送オプションの有無
- ユーザーのロールに基づいた配送方法の制御
- 特定のカスタム条件に基づいた配送方法の無効化
- セールやプロモーション中の配送オプションの変更
- カート内の商品タイプに応じた配送の有効/無効
- 他のプラグインとの統合による追加配送オプションの制御
構文
add_filter('woocommerce_shipping_enabled', 'your_function_name', 10, 1);
パラメータ
$enabled
: 現在の配送が有効かどうかを示すブール値。
戻り値
- ブール値(
true
またはfalse
)
使用可能なバージョン
- WooCommerce: 4.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
add_filter('woocommerce_shipping_enabled', 'disable_shipping_on_holidays');
function disable_shipping_on_holidays($enabled) {
$holidays = ['2023-01-01', '2023-12-25']; // 祝日
if (in_array(date('Y-m-d'), $holidays)) {
return false; // 祝日は配送を無効化
}
return $enabled; // それ以外は元の設定を返す
}
このサンプルでは、指定した祝日に配送を無効にします。
サンプルコード 2
add_filter('woocommerce_shipping_enabled', 'check_user_role_shipping');
function check_user_role_shipping($enabled) {
if (current_user_can('subscriber')) {
return false; // サブスクリバーロールのユーザーには配送を無効化
}
return $enabled; // その他のユーザーには元の設定を返す
}
この例では、特定のユーザー権限に基づいて配送を制御しています。
サンプルコード 3
add_filter('woocommerce_shipping_enabled', 'custom_shipping_based_on_cart');
function custom_shipping_based_on_cart($enabled) {
$cart_items = WC()->cart->get_cart();
foreach ($cart_items as $item) {
if ($item['product_id'] == 123) { // 特定の商品IDをチェック
return false; // 特定の商品が含まれている場合、配送を無効化
}
}
return $enabled; // その他の場合は元の設定を返す
}
このコードでは、特定の商品がカートに含まれている場合に配送を無効にします。
サンプルコード 4
add_filter('woocommerce_shipping_enabled', 'seasonal_shipping_option');
function seasonal_shipping_option($enabled) {
$current_month = date('m');
if ($current_month == '12') { // 12月のみ配送を有効化
return true;
}
return false; // それ以外の月では配送を無効化
}
この例では、特定の月にだけ配送を有効化します。
サンプルコード 5
add_filter('woocommerce_shipping_enabled', 'customize_shipping_for_promotion');
function customize_shipping_for_promotion($enabled) {
if ('promo' === get_option('current_promo')) { // 現在のプロモーションが有効な場合
return true; // プロモーション期間中は配送を有効化
}
return false; // プロモーションがないときは配送を無効化
}
このサンプルは、プロモーションが有効な場合にのみ配送を有効にします。