如何获取 WooCommerce 中所有可用的税率?

Mr.*_* Jo 3 php wordpress woocommerce

我目前正在构建一个自定义表单。在此表单中,我想显示结帐时已存在的国家/地区选择。

\n\n

这是我的税务设置列表:

\n\n

在此输入图像描述

\n\n

这是我的代码:

\n\n
<select class="country-select">\n    <?php\n    foreach ( WC_Tax::get_rates() as $rate ) {\n        echo \'<option value="\' . $rate->tax_rate . \'">\' . $rate->country . \'</option>\';\n    }\n    ?>\n</select>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我期待以下选项:

\n\n
<option value="19">Deutschland</option>\n<option value="20">\xc3\x96sterreich</option>\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题是我没有从get_rates()函数中得到任何结果。我发现没有函数可以返回正确的汇率。你知道我该如何完成这件事吗?

\n

Fla*_*bar 7

长话短说

$all_tax_rates = [];
$tax_classes = WC_Tax::get_tax_classes(); // Retrieve all tax classes.
if ( !in_array( '', $tax_classes ) ) { // Make sure "Standard rate" (empty class name) is present.
    array_unshift( $tax_classes, '' );
}
foreach ( $tax_classes as $tax_class ) { // For each tax class, get all rates.
    $taxes = WC_Tax::get_rates_for_tax_class( $tax_class );
    $all_tax_rates = array_merge( $all_tax_rates, $taxes );
}
Run Code Online (Sandbox Code Playgroud)

解释:

据我所知,您只能获取给定特定的所有税率的列表tax_class,该列表用于按列过滤woocommerce_tax_ratestax_rate_class(好吧,我们总是可以直接查询数据库,但我假设您想解决问题使用 WooCommerce 提供的功能)。此外,“标准费率”没有tax_class,即。tax_rate_class列是一个空字符串。

因此,如果您想获得每个类别的所有税率,则需要使用WC_Tax::get_rates_for_tax_class( $tax_class ). 但是,如果您确实想要所有税率(无论类别如何),则需要先获取所有税收类别,然后获取每个类别的所有税率。