概要
woocommerce_base_tax_rates
フィルタは、WooCommerceの税率設定に関連するデータを操作するために使用されます。具体的には、基本的な税率の配列を変更したり、新たに税率を追加したりすることができます。このフィルタは、特に次のような機能を実装する際に役立ちます。
- 特定の顧客グループに対して異なる税率を設定
- 地域ごとの税率を変更
- 商品やサービスに応じてカスタム税率を適用
- 税率の計算ロジックをカスタマイズ
- 新しい税区を追加
- 既存の税率を無効化または削除
構文
add_filter('woocommerce_base_tax_rates', 'custom_base_tax_rates');
function custom_base_tax_rates($tax_rates) {
// コードを追加
return $tax_rates;
}
パラメータ
$tax_rates
(array): 既存の基本税率の配列。
戻り値
- (array): 変更された基本税率の配列。
バージョン
- WooCommerce バージョン: 2.0.0以上
- WordPress バージョン: 3.5以上
サンプルコード
サンプルコード1: 特定の地域に対して追加の税率を設定する
このサンプルコードでは、特定の地域(例:北海道)に対して新しい税率を追加しています。
add_filter('woocommerce_base_tax_rates', 'add_hokkaido_tax_rate');
function add_hokkaido_tax_rate($tax_rates) {
$tax_rates[] = array(
'id' => 'hokkaido',
'country' => 'JP',
'state' => '01',
'rate' => 10,
'name' => 'Hokkaido Tax',
'priority' => 1,
'compound' => false,
);
return $tax_rates;
}
サンプルコード2: 商品カテゴリに基づいて異なる税率を設定する
このサンプルでは、特定の商品のカテゴリに対して異なる税率を設定しています。
add_filter('woocommerce_base_tax_rates', 'set_category_tax_rate');
function set_category_tax_rate($tax_rates) {
if (has_term('special-category', 'product_cat')) {
$tax_rates[] = array(
'id' => 'special-category-tax',
'country' => 'JP',
'state' => '',
'rate' => 8,
'name' => 'Special Category Tax',
'priority' => 1,
'compound' => false,
);
}
return $tax_rates;
}
サンプルコード3: 既存の税率を無効化する
このサンプルコードでは、特定の税率を無効にする方法を示しています。
add_filter('woocommerce_base_tax_rates', 'remove_specific_tax_rate');
function remove_specific_tax_rate($tax_rates) {
foreach ($tax_rates as $key => $rate) {
if ($rate['name'] === 'Old Tax Rate') {
unset($tax_rates[$key]);
}
}
return $tax_rates;
}
サンプルコード4: 税率を変更して表示名を変更
このサンプルでは、既存の税率を変更して、表示名をカスタマイズしています。
add_filter('woocommerce_base_tax_rates', 'modify_tax_rate_display_name');
function modify_tax_rate_display_name($tax_rates) {
foreach ($tax_rates as $key => $rate) {
if ($rate['name'] === 'Standard Rate') {
$tax_rates[$key]['name'] = 'Updated Standard Rate';
}
}
return $tax_rates;
}
サンプルコード5: 複数の税率を追加する
このサンプルでは、複数の異なる税率を一度に追加しています。
add_filter('woocommerce_base_tax_rates', 'add_multiple_tax_rates');
function add_multiple_tax_rates($tax_rates) {
$new_tax_rates = array(
array(
'id' => 'rate1',
'country' => 'JP',
'state' => '',
'rate' => 8,
'name' => 'General Tax',
'priority' => 1,
'compound' => false,
),
array(
'id' => 'rate2',
'country' => 'JP',
'state' => '',
'rate' => 10,
'name' => 'Luxury Tax',
'priority' => 2,
'compound' => false,
),
);
return array_merge($tax_rates, $new_tax_rates);
}
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |