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

概要

woocommerce_rate_compound フィルタは、WooCommerceでの料金の合成計算をカスタマイズするために使用されます。このフックは、特に商品の合計金額や配送オプションの料金を計算する際に利用されます。主な機能としては以下が挙げられます。

  1. 配送費用のカスタマイズ
  2. 税率を適用する際の料金調整
  3. 割引やプロモーションコードの適用
  4. 顧客の場所に基づく料金の調整
  5. 複数の製品にまたがる合計料金の処理
  6. サードパーティサービス(決済ゲートウェイなど)への統合

構文

add_filter( 'woocommerce_rate_compound', 'callback_function', 10, 3 );

パラメータ

  • $compound – 合成された料金の値
  • $rate – 現在の料金オブジェクト
  • $instance – 料金インスタンス(料金計算のコンテキストを示します)

戻り値

  • カスタマイズされた合成料金の値

対応するWooCommerceバージョン

このフィルタはWooCommerce 2.0以降で使用可能です。

対応するWordPressバージョン

WordPress 4.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_rate_compound', 'custom_rate_compound', 10, 3 );

function custom_rate_compound( $compound, $rate, $instance ) {
    if ( $instance->id === 'flat_rate' ) {
        $compound += 5; // フラットレートに5ドルを追加
    }
    return $compound;
}

このコードは、フラットレート料金に5ドルを追加する機能を実装しています。

サンプルコード2

add_filter( 'woocommerce_rate_compound', 'adjust_rate_for_loyalty', 10, 3 );

function adjust_rate_for_loyalty( $compound, $rate, $instance ) {
    if ( is_user_logged_in() && current_user_can( 'loyal_customer' ) ) {
        $compound *= 0.9; // ロイヤルカスタマーには10%割引
    }
    return $compound;
}

このサンプルは、ロイヤルカスタマーに対して合成料金を10%割引して提供します。

サンプルコード3

add_filter( 'woocommerce_rate_compound', 'apply_fee_for_express_shipping', 10, 3 );

function apply_fee_for_express_shipping( $compound, $rate, $instance ) {
    if ( $rate->method_id === 'flat_rate' && isset( $_POST['shipping_option'] ) && $_POST['shipping_option'] === 'express' ) {
        $compound += 15; // エクスプレス配送料を追加
    }
    return $compound;
}

このコードは、エクスプレス配送選択時に合成料金に15ドルを追加します。

サンプルコード4

add_filter( 'woocommerce_rate_compound', 'discount_on_bulk_order', 10, 3 );

function discount_on_bulk_order( $compound, $rate, $instance ) {
    if ( WC()->cart->get_cart_contents_count() > 10 ) {
        $compound -= 10; // 10個以上購入の場合、10ドル割引
    }
    return $compound;
}

このコードは、顧客が10個以上のアイテムを購入した場合に10ドルの割引を適用します。

サンプルコード5

add_filter( 'woocommerce_rate_compound', 'modify_rate_due_to_location', 10, 3 );

function modify_rate_due_to_location( $compound, $rate, $instance ) {
    if ( WC()->customer->get_shipping_country() === 'JP' ) {
        $compound += 20; // 日本からの配送を20ドル増加
    }
    return $compound;
}

このサンプルコードは、配送先が日本の場合に合成料金を20ドル増加させます。

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


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