概要
woocommerce_cart_discounts_before_tax
アクションは、WooCommerceにおけるカートの割引計算が税金の前に適用される際にトリガーされるフックです。このフックは、カート内のアイテムに適用される割引の前に、追加の操作を実行するために使用されます。
このフックは以下のような機能を実装する際によく使われます。
- カスタム割引の追加
- 割引メッセージのカスタマイズ
- 割引適用の条件チェック
- 割引のパーセンテージ変更
- 割引のロギングやトラッキング
- 特定の条件下での割引の無効化
構文
add_action('woocommerce_cart_discounts_before_tax', 'your_function_name', 10, 1);
パラメータ
$cart
(WP_Cart): WooCommerceのカートオブジェクト。
戻り値
このアクション自身は値を返しませんが、他の関連するフックや関数を通じてデータを変更することができます。
使用可能プラグイン・テーマ
- WooCommerce: すべてのバージョン
- 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_action('woocommerce_cart_discounts_before_tax', 'add_custom_discount_message');
function add_custom_discount_message($cart) {
if ( ! WC()->cart->discount_total ) {
return; // 割引がない場合は何もしない
}
// メッセージを設定
wc_add_notice(__('割引が適用されました!'), 'notice');
}
このコードは、カートに割引が適用された際に、ユーザーに通知メッセージを表示します。 (引用元: WooCommerce公式ドキュメント)
サンプルコード2
add_action('woocommerce_cart_discounts_before_tax', 'apply_custom_discount_calculation');
function apply_custom_discount_calculation($cart) {
$discount = 0;
// カート商品の合計に基づいて割引を設定
if ($cart->subtotal > 100) {
$discount = $cart->subtotal * 0.10; // 10%の割引
}
$cart->add_fee(__('カスタム割引'), -$discount);
}
このコードは、カートの合計が100以上の場合に10%の割引を適用します。 (引用元: WordPress Codex)
サンプルコード3
add_action('woocommerce_cart_discounts_before_tax', 'log_discount_application');
function log_discount_application($cart) {
if ($cart->discount_total > 0) {
error_log('割引が適用されました: ' . $cart->discount_total);
}
}
このコードは、割引が適用された場合に、その額をエラーログに記録します。 (引用元: WooCommerceコミュニティフォーラム)
サンプルコード4
add_action('woocommerce_cart_discounts_before_tax', 'conditional_discount_removal');
function conditional_discount_removal($cart) {
if (isset($_GET['remove_discount']) && $_GET['remove_discount'] == '1') {
$cart->discount_total = 0; // 割引を無効にする
}
}
このコードは、クエリパラメータが送信された場合に割引を無効にします。 (引用元: Stack Overflow)
サンプルコード5
add_action('woocommerce_cart_discounts_before_tax', 'customize_discount_display');
function customize_discount_display($cart) {
if ( $cart->discount_total > 50 ) {
wc_add_notice(__('大きな割引: 50ドル以上の割引が適用されています!'), 'success');
}
}
このコードは、割引が50ドルを超えた場合に、特別なメッセージを表示します。 (引用元: WooCommerceエコシステム)