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

概要

woocommerce_cart_totals_get_fees_from_cart_taxesは、WooCommerceプラグインにおいてカートの合計料金に関連する税金情報を調整するために使用されるフィルターフックです。このフィルターは、カートに追加された手数料が税金から取得される方法を変更します。特に、税金や手数料の表示方法をカスタマイズしたいときに役立ちます。

よく使われる機能

  1. 税金計算のカスタマイズ
  2. 手数料の表示調整
  3. 複数の税率の適用
  4. 地域別の税率管理
  5. ディスカウント適用時の税金再計算
  6. カート内の費用明細の変更

構文

add_filter( 'woocommerce_cart_totals_get_fees_from_cart_taxes', 'your_function_name' );

パラメータ

  • false $fees_from_cart – カートから取得された手数料。

戻り値

  • array – 修正された手数料の配列。

利用可能なプラグインとバージョン

  • WooCommerce: 2.6.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_totals_get_fees_from_cart_taxes', 'adjust_fees_based_on_tax', 10, 1 );

function adjust_fees_based_on_tax( $fees_from_cart ) {
    // 手数料が特定の条件を満たす場合に税金を調整
    foreach ( $fees_from_cart as $index => $fee ) {
        if ( $fee['name'] === '特定の手数料名' ) {
            $fees_from_cart[$index]['taxes'] = array_map( function($tax) { return $tax * 0.9; }, $fee['taxes'] ); // 10%割引
        }
    }
    return $fees_from_cart;
}

このコードは、特定の手数料に対して適用される税金を10%減少させることで、顧客に対するインセンティブを提供します。

サンプル2: 自動で特定の手数料を追加

add_filter( 'woocommerce_cart_totals_get_fees_from_cart_taxes', 'add_special_fee_to_cart', 15, 1 );

function add_special_fee_to_cart( $fees_from_cart ) {
    $fees_from_cart[] = array(
        'name' => '特別手数料',
        'amount' => 500, // 固定金額
        'taxes' => array(0) // 税金はゼロ
    );
    return $fees_from_cart;
}

このコードは、カートに「特別手数料」を追加し、固定料金を表示します。

サンプル3: 環境に応じた手数料の税金を調整

add_filter( 'woocommerce_cart_totals_get_fees_from_cart_taxes', 'environment_based_fee_adjustment', 20, 1 );

function environment_based_fee_adjustment( $fees_from_cart ) {
    $current_environment = wp_get_environment_type(); // 環境を取得

    if ( $current_environment === 'development' ) {
        foreach ( $fees_from_cart as $key => $fee ) {
            $fees_from_cart[$key]['amount'] *= 0.5; // 開発環境では手数料を半額に
        }
    }
    return $fees_from_cart;
}

このコードは、開発環境での手数料を半額に調整します。

サンプル4: カートの合計に応じた条件付き税金

add_filter( 'woocommerce_cart_totals_get_fees_from_cart_taxes', 'conditional_tax_on_total', 25, 1 );

function conditional_tax_on_total( $fees_from_cart ) {
    $cart_total = WC()->cart->subtotal;

    if ( $cart_total > 10000 ) { // 1万円以上の条件
        foreach ( $fees_from_cart as $key => $fee ) {
            $fees_from_cart[$key]['taxes'] = array_merge($fee['taxes'], array( '新しい税金' => 100 )); // 新しい税金を追加
        }
    }
    return $fees_from_cart;
}

このコードは、カートの合計が1万円を超えると特定の税金を追加します。

サンプル5: 一定条件下での手数料の削除

add_filter( 'woocommerce_cart_totals_get_fees_from_cart_taxes', 'remove_fee_if_condition_met', 30, 1 );

function remove_fee_if_condition_met( $fees_from_cart ) {
    foreach ( $fees_from_cart as $key => $fee ) {
        if ( $fee['name'] === '削除したい手数料名' ) {
            unset( $fees_from_cart[$key]; // 条件に基づいて手数料を削除
        }
    }
    return $fees_from_cart;
}

このコードは、特定の手数料が存在する場合に、その手数料をカートから削除します。

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


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