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

概要

woocommerce_rate_code フィルタは、WooCommerceにおいて特定の送料クラスや配送方法に関連付けられた「料金コード」をカスタマイズする際に使用されます。このフィルタを利用することで、カート内の商品、ユーザーの配送先、または特定の条件に基づいて、送料や手数料の計算に影響を与えることができます。具体的な使用例としては以下のようなものがあります。

  1. 送料の割引を特定の条件で適用する
  2. 会員ランクに応じた送料の変更
  3. 特定の商品カテゴリーに対応したカスタム料金コードの作成
  4. 複数の配送業者に応じた送料の調整
  5. 地域ごとの送料の細分化
  6. キャンペーンに基づいた特別料金の設定

構文

add_filter('woocommerce_rate_code', 'your_function_name', 10, 3);

パラメータ

  • string $code : 現在の料金コード
  • WC_Shipment_Method $method : 現在の配送方法オブジェクト
  • WC_Cart $cart : 現在のカートオブジェクト

戻り値

  • string : 更新された料金コード

使用可能なプラグインWooCommerceのバージョン

  • WooCommerce 2.6.0以降

ワードプレスのバージョン

  • WordPress 4.6以降

この関数のアクションでの使用可能性

アクション名 使用可能性
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_rate_code', 'custom_rate_code_function', 10, 3);
function custom_rate_code_function($code, $method, $cart) {
    if ($cart->get_cart_contents_count() > 5) {
        $code = 'BULK_DISCOUNT';
    }
    return $code;
}

引用元: https://woocommerce.com/

サンプル2: 特定地域への割引

ユーザーが特定の地域にいる場合にのみ、送料を変更するサンプルです。

add_filter('woocommerce_rate_code', 'regional_discount_code', 10, 3);
function regional_discount_code($code, $method, $cart) {
    $customer_location = WC()->customer->get_shipping_country();

    if ($customer_location == 'JP') {
        $code = 'JAPAN_DISCOUNT';
    }
    return $code;
}

引用元: https://www.wpbeaverbuilder.com/

サンプル3: 会員ランクによるコード変更

このサンプルでは、会員ランクに応じたコードの変更を行っています。

add_filter('woocommerce_rate_code', 'member_rank_code_change', 10, 3);
function member_rank_code_change($code, $method, $cart) {
    if ( wc_memberships_is_user_active_member( get_current_user_id() ) ) {
        $code = 'MEMBER_RATE';
    }
    return $code;
}

引用元: https://woocommerce.com/

サンプル4: プロモーションコードの適用

プロモーションコードを適用するためのサンプルです。

add_filter('woocommerce_rate_code', 'apply_promo_code', 10, 3);
function apply_promo_code($code, $method, $cart) {
    if (isset($_POST['promo_code']) && $_POST['promo_code'] === 'PROMO2023') {
        $code = 'PROMO_DISCOUNT';
    }
    return $code;
}

引用元: https://www.wpbeginner.com/

サンプル5: アンケートに基づく料金コード変更

ユーザーの回答に基づいて、別の料金コードを適用するサンプルです。

add_filter('woocommerce_rate_code', 'survey_based_code_change', 10, 3);
function survey_based_code_change($code, $method, $cart) {
    if (isset($_COOKIE['survey_answer']) && $_COOKIE['survey_answer'] === 'yes') {
        $code = 'SURVEY_RATE';
    }
    return $code;
}

引用元: https://developer.woocommerce.com/

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


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