概要
woocommerce_get_shipping_tax
フィルタは、WooCommerceでの配送料に関連する税金の計算や表示をカスタマイズするために使用されます。このフィルタは、税金の金額に対して最終的な調整を行ったり、特定の条件に基づいて税金を変更したりする際に便利です。具体的には、以下のような機能を実装する際によく使われます:
- 特定の地域に対する異なる税率の適用
- 顧客のユーザーロールに応じた税金の変更
- プロモーションやディスカウントによる税率の調整
- 大口注文や特別な顧客への優遇措置
- 基本的な税金計算に対する追加の手数料の追加
- 購入金額に基づく税率の設定
構文
add_filter('woocommerce_get_shipping_tax', 'custom_get_shipping_tax', 10, 3);
パラメータ
$taxes
: 計算された税金の配列$shipping
: 現在の配送オプション$order
: 現在の注文オブジェクト
戻り値
フィルタを使用して変更された税金の配列
使用可能なプラグインWooCommerceのバージョン
WooCommerceのバージョン3.0以降で使用可能
ワードプレスのバージョン
ワードプレスのバージョン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_get_shipping_tax', function($taxes, $shipping, $order) {
if ($order->get_user_id() === 1) {
$taxes = array_map(function($tax) {
return $tax * 0.5; // 例: ユーザーIDが1の場合、税金を50%引きにする
}, $taxes);
}
return $taxes;
});
このサンプルコードは、特定のユーザーID(この場合は1)に対して、税金を50%引きにするフィルタの例です。
サンプル 2
add_filter('woocommerce_get_shipping_tax', function($taxes, $shipping, $order) {
if ($shipping->get_method() === 'free_shipping') {
return []; // 無料配送の時は税金をゼロにする
}
return $taxes;
});
このコードでは、配送方法が「無料配送」の場合に、税金をゼロに設定します。
サンプル 3
add_filter('woocommerce_get_shipping_tax', function($taxes, $shipping, $order) {
$additional_fee = 10;
return array_map(function($tax) use ($additional_fee) {
return $tax + $additional_fee; // すべての税金に追加の手数料を加える
}, $taxes);
});
このサンプルは、すべての税金に対して固定の追加手数料を加える方法を示しています。
サンプル 4
add_filter('woocommerce_get_shipping_tax', function($taxes, $shipping, $order) {
if ($order->get_total() > 100) {
// 購入金額が100を超えた場合は、税金を0にする
return array_fill(0, count($taxes), 0);
}
return $taxes;
});
このコードは、購入金額が100を超える場合に、税金をゼロにする条件付きのフィルタ例です。
サンプル 5
add_filter('woocommerce_get_shipping_tax', function($taxes, $shipping, $order) {
foreach ($taxes as &$tax) {
$tax *= 1.1; // すべての税金に10%の上乗せをする
}
return $taxes;
});
このサンプルでは、全ての税金に対して10%の上乗せを行っています。