概要
woocommerce_order_get_tax_totals
フィルタは、WooCommerceの注文の税金合計を取得する際に使用されるフックです。このフィルタを使用すると、税金合計の値を変更したり、カスタム処理を追加することができます。具体的に、以下のような機能を実装する際によく使われます。
- 税金計算をカスタマイズ
- 特定の条件に基づく税率の調整
- 税金合計に追加の情報を付加
- 税計算の対象となるアイテムのフィルタリング
- 商品や顧客の属性に基づく特別な割引税率の適用
- 外部税計算サービスとの連携
構文
add_filter( 'woocommerce_order_get_tax_totals', 'your_function_name', 10, 2 );
パラメータ
$tax_totals
: 既存の税金合計の配列$order
: 対象の注文オブジェクト
戻り値
- 修正された税金合計の配列
使用可能なバージョン
- WooCommerce: 3.6+
- WordPress: 5.0+
サンプルコード
サンプルコード1: 税合計にカスタムメッセージを追加
このサンプルは、税金合計にカスタムメッセージを追加する方法を示しています。
add_filter( 'woocommerce_order_get_tax_totals', 'add_custom_message_to_tax_totals', 10, 2 );
function add_custom_message_to_tax_totals( $tax_totals, $order ) {
foreach ( $tax_totals as $key => $tax ) {
$tax_totals[ $key ]->label .= ' (カスタムメッセージ)';
}
return $tax_totals;
}
引用元: https://woocommerce.com/
サンプルコード2: 特定の税率を変更する
このサンプルは、特定の税率を条件に基づいて変更する例です。
add_filter( 'woocommerce_order_get_tax_totals', 'modify_specific_tax_rate', 10, 2 );
function modify_specific_tax_rate( $tax_totals, $order ) {
foreach ( $tax_totals as $key => $tax ) {
if ( $tax->rate_id === '特定の税率ID' ) {
$tax_totals[ $key ]->amount *= 0.9; // 10%割引
}
}
return $tax_totals;
}
引用元: https://developer.woocommerce.com/
サンプルコード3: 税金合計のロギング
このサンプルは、税金合計をログに記録する方法を示しています。
add_filter( 'woocommerce_order_get_tax_totals', 'log_tax_totals', 10, 2 );
function log_tax_totals( $tax_totals, $order ) {
error_log( print_r( $tax_totals, true ) );
return $tax_totals;
}
引用元: https://wordpress.org/
サンプルコード4: 料金明細を変更
このサンプルは、料金明細に税合計を反映させる方法を示しています。
add_filter( 'woocommerce_order_get_tax_totals', 'update_tax_summary', 10, 2 );
function update_tax_summary( $tax_totals, $order ) {
$new_total = 0;
foreach ( $tax_totals as $tax ) {
$new_total += $tax->amount;
}
$tax_totals[0]->amount = $new_total; // すべての税を合算
return $tax_totals;
}
引用元: https://www.wpbeginner.com/
サンプルコード5: カスタムオブジェクトの追加
このサンプルは、税金の合計にカスタムオブジェクトを追加する方法を示しています。
add_filter( 'woocommerce_order_get_tax_totals', 'add_custom_object_to_tax_totals', 10, 2 );
function add_custom_object_to_tax_totals( $tax_totals, $order ) {
$tax_totals['custom'] = (object) array(
'label' => 'カスタム税',
'amount' => 5.00,
'rate_id' => 'カスタム税ID'
);
return $tax_totals;
}
引用元: https://www.smashingmagazine.com/
この関数のアクションでの使用可能性
アクション名 | 使用可能性 |
---|---|
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 |