プラグインWooCommerceのwc_shipping_enabledフィルタの使用方法・解説

概要

wc_shipping_enabledフィルタは、WooCommerceにおける配送機能の有効化状態を制御するために使用されます。このフィルタを利用することで、特定の条件下で配送方法が利用可能であるかどうかを判断するロジックを実装できます。以下は、このフィルタがよく使われる機能の例です。

  1. 特定の地域への配送オプションの有無
  2. ユーザーのロールに基づいた配送方法の制御
  3. 特定のカスタム条件に基づいた配送方法の無効化
  4. セールやプロモーション中の配送オプションの変更
  5. カート内の商品タイプに応じた配送の有効/無効
  6. 他のプラグインとの統合による追加配送オプションの制御

構文

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; // プロモーションがないときは配送を無効化
}

このサンプルは、プロモーションが有効な場合にのみ配送を有効にします。

この関数について質問する


上の計算式の答えを入力してください