概要
woocommerce_cart_total_discount
フィルタは、WooCommerceにおけるカートの総割引額を操作するためのフックです。これにより、開発者はカートの総割引額をカスタマイズできます。具体的には、割引の計算や表示の調整など、カートの表示内容を変更する際に頻繁に使用されます。以下は、このフィルタを使用する場合に考えられる機能の例です:
- 特定の条件を満たす場合に割引を追加する。
- 割引額を動的に計算する。
- 特定の商品やカテゴリにだけ特別な割引を適用する。
- ユーザーのロールに基づいて異なる割引を提供する。
- 割引クーポンの適用状況を反映させる。
- カートの表示をカスタマイズするためのカスタムロジックを追加する。
構文
add_filter( 'woocommerce_cart_total_discount', 'your_function_name', 10, 2 );
パラメータ
$discount
: 現在の割引額。$cart
: カートオブジェクト。
戻り値
- カスタマイズされた割引額。
使用可能なバージョン
- WooCommerce: バージョン3.0以降
- 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_cart_total_discount', 'custom_discount_for_product', 10, 2 );
function custom_discount_for_product( $discount, $cart ) {
foreach ( $cart->get_cart() as $cart_item ) {
if ( $cart_item['product_id'] == 123 ) { // 商品ID 123 の場合
$discount += 10; // 追加割引として $10 を加算
}
}
return $discount;
}
引用元: https://developer.woocommerce.com/
サンプルコード2
このコードは、ユーザーのロールに基づいて割引を変更する方法を示しています。
add_filter( 'woocommerce_cart_total_discount', 'role_based_discount', 10, 2 );
function role_based_discount( $discount, $cart ) {
if ( current_user_can( 'subscriber' ) ) {
$discount += 5; // 購読者の場合には $5 割引を加算
}
return $discount;
}
引用元: https://developer.woocommerce.com/
サンプルコード3
このサンプルコードは、カート内の商品数に基づいて割引額を調整する例です。
add_filter( 'woocommerce_cart_total_discount', 'quantity_based_discount', 10, 2 );
function quantity_based_discount( $discount, $cart ) {
$item_count = $cart->get_cart_contents_count();
if ( $item_count > 5 ) {
$discount += 15; // 5個以上の商品がある場合、$15 割引
}
return $discount;
}
引用元: https://developer.woocommerce.com/
サンプルコード4
以下は、カート内の合計金額に基づいて割引を適用する例です。
add_filter( 'woocommerce_cart_total_discount', 'total_amount_discount', 10, 2 );
function total_amount_discount( $discount, $cart ) {
if ( $cart->get_subtotal() > 100 ) {
$discount += 20; // 合計金額が $100 を超える場合、$20 割引
}
return $discount;
}
引用元: https://developer.woocommerce.com/
サンプルコード5
このサンプルは、カートに特定のクーポンが適用されている場合に割引を調整する例です。
add_filter( 'woocommerce_cart_total_discount', 'coupon_based_discount', 10, 2 );
function coupon_based_discount( $discount, $cart ) {
if ( in_array( 'SPECIAL10', $cart->get_used_coupons() ) ) {
$discount += 10; // SPECIAL10 クーポンが使われている場合 $10 割引
}
return $discount;
}
引用元: https://developer.woocommerce.com/