概要
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/