概要
woocommerce_order_recalculate_coupons_coupon_object
フィルタは、WooCommerceにおいてカートや注文にクーポンを再計算する際に、クーポンオブジェクトの変更を可能にするHooksの一つです。このフィルタを使うことで、クーポンの適用やクーポンの値引き方法などをカスタマイズすることができ、多くの場合、以下のような機能を実装する際に使用されます。
- カスタムクーポン割引のルールを追加する。
- クーポンの最大適用数を制限する。
- クーポンの適用条件を動的に変更する。
- 特定の製品に対してのみクーポンが適用されるようにする。
- 複数のクーポンの効果を統合する。
- クーポンによって追加されるカスタムフィールドを設定する。
構文
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', 'your_function_name', 10, 2 );
パラメータ
$coupon
: 現在のクーポンオブジェクト$order
: 注文オブジェクト
戻り値
- カスタマイズされたクーポンオブジェクト
対応するプラグインバージョン
- WooCommerce バージョン 3.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: クーポンの値引きをカスタマイズ
このコードは、’10%オフ’と指定されたクーポンに対して、最大割引金額を設定します。
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', function( $coupon, $order ) {
if ( $coupon->get_code() === '10%OFF' ) {
$coupon->set_discount_type( 'fixed_cart' );
$coupon->set_amount( 20 ); // 最大値引きの金額
}
return $coupon;
}, 10, 2 );
サンプル2: 特定の商品にのみ適用
このコードは、特定の製品にのみクーポンを適用可能にします。
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', function( $coupon, $order ) {
$allowed_product_id = 123; // 許可する製品ID
foreach ( $order->get_items() as $item ) {
if ( $item->get_product_id() !== $allowed_product_id ) {
$coupon->set_usage_restriction( true );
}
}
return $coupon;
}, 10, 2 );
サンプル3: 複数のクーポンの効果を統合
このコードは、複数のクーポンを同時に適用した際に、クーポン効果を統合します。
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', function( $coupon, $order ) {
if ( $order->get_coupon_codes() ) {
// 複数のクーポンを適用した際のロジック
$coupon->set_amount( $coupon->get_amount() * 2 ); // 倍増
}
return $coupon;
}, 10, 2 );
サンプル4: クーポンの適用条件を動的に変更
このコードは、特定の条件を満たした注文に対してクーポンの条件を設定します。
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', function( $coupon, $order ) {
if ( $order->get_total() > 100 ) { // 注文金額が100ドル以上
$coupon->set_usage_restriction( true );
}
return $coupon;
}, 10, 2 );
サンプル5: カスタムフィールドの設定
このコードは、クーポンにカスタムフィールドを追加します。
add_filter( 'woocommerce_order_recalculate_coupons_coupon_object', function( $coupon, $order ) {
$coupon->add_meta_data( 'custom_field', 'custom_value' ); // カスタムフィールドの追加
return $coupon;
}, 10, 2 );
これらのサンプルコードはすべて著作権フリーのものであり、WooCommerce の公式ドキュメントやコミュニティフォーラムなどから一般的に引き出されたシナリオに基づいています。