概要
woocommerce_product_is_taxable
フィルタは、WooCommerce における商品の課税可否を判断するために使用されます。主に次のようなシナリオで利用されます:
- カスタム税金の追加:特定の条件に基づいて、商品が課税対象かどうかを変更する。
- 特定のカテゴリによる課税設定:商品カテゴリに基づいて課税の有無を制御する。
- ユーザーの地域による税率変更:地理的条件に応じて税金の有無を決定する。
- 特定のクーポンによる対応:クーポン適用時に税金が除外されるかどうかを制御する。
- デジタル商品と物理商品の違い:商品のタイプに基づいて課税の有無を制御する。
- 外部APIとの連携:外部データを基に商品の税金設定を動的に変更する。
構文
add_filter( 'woocommerce_product_is_taxable', 'your_function_name', 10, 2 );
パラメータ
true|false
: 商品が課税対象かどうかを示す真偽値。$product
:WC_Product
オブジェクト。
戻り値
- このフィルタにより、商品が課税対象かどうかを示す真偽値が返されます。
使用可能なプラグイン WooCommerce のバージョン
- WooCommerce バージョン 2.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_product_is_taxable', 'custom_taxable_product', 10, 2 );
function custom_taxable_product( $is_taxable, $product ) {
if ( has_term( 'non-taxable', 'product_cat', $product->get_id() ) ) {
return false; // 'non-taxable' カテゴリの商品の場合は課税しない
}
return $is_taxable; // デフォルトの課税設定に戻す
}
// 引用元: https://woocommerce.com/
サンプルコード 2: 特定のユーザーによる税金の除外
add_filter( 'woocommerce_product_is_taxable', 'exclude_tax_for_specific_user', 10, 2 );
function exclude_tax_for_specific_user( $is_taxable, $product ) {
if ( is_user_logged_in() && current_user_can( 'specific_role' ) ) {
return false; // 特定のユーザー役割の場合は課税しない
}
return $is_taxable;
}
// 引用元: https://developer.woocommerce.com/
サンプルコード 3: 特定のクーポン使用時の課税設定
add_filter( 'woocommerce_product_is_taxable', 'taxable_product_by_coupon', 10, 2 );
function taxable_product_by_coupon( $is_taxable, $product ) {
if ( WC()->cart->has_discount( 'tax_exempt_coupon' ) ) {
return false; // 'tax_exempt_coupon' が使われている場合は課税しない
}
return $is_taxable;
}
// 引用元: https://www.wpbeginner.com/
サンプルコード 4: デジタル商品の無課税設定
add_filter( 'woocommerce_product_is_taxable', 'digital_product_tax_exemption', 10, 2 );
function digital_product_tax_exemption( $is_taxable, $product ) {
if ( $product->is_type( 'digital' ) ) {
return false; // デジタル商品は課税しない
}
return $is_taxable;
}
// 引用元: https://www.sitepoint.com/
サンプルコード 5: 外部APIに基づく動的な課税設定
add_filter( 'woocommerce_product_is_taxable', 'dynamic_tax_by_api', 10, 2 );
function dynamic_tax_by_api( $is_taxable, $product ) {
// 外部APIから税金情報を取得する処理を記述
$api_response = get_external_tax_info( $product->get_id() );
return $api_response['is_taxable']; // APIの結果に基づいて課税設定
}
// 引用元: https://themeisle.com/
このように、woocommerce_product_is_taxable
フィルタを使うことで、さまざまな条件に基づいて商品の課税可能性を柔軟に変更することができます。