概要
woocommerce_rate_code
フィルタは、WooCommerceにおいて特定の送料クラスや配送方法に関連付けられた「料金コード」をカスタマイズする際に使用されます。このフィルタを利用することで、カート内の商品、ユーザーの配送先、または特定の条件に基づいて、送料や手数料の計算に影響を与えることができます。具体的な使用例としては以下のようなものがあります。
- 送料の割引を特定の条件で適用する
- 会員ランクに応じた送料の変更
- 特定の商品カテゴリーに対応したカスタム料金コードの作成
- 複数の配送業者に応じた送料の調整
- 地域ごとの送料の細分化
- キャンペーンに基づいた特別料金の設定
構文
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/