Php 我如何获得WooCommerce中所有可用的税率?
我目前正在构建一个自定义表单。在这个表单中,我想显示已存在于签出中的国家/地区选择 这是我的税务设置列表: 这是我的代码:Php 我如何获得WooCommerce中所有可用的税率?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我目前正在构建一个自定义表单。在这个表单中,我想显示已存在于签出中的国家/地区选择 这是我的税务设置列表: 这是我的代码: <select class="country-select"> <?php foreach ( WC_Tax::get_rates() as $rate ) { echo '<option value="' . $rate->tax_rate . '">' . $rate->country . '&
<select class="country-select">
<?php
foreach ( WC_Tax::get_rates() as $rate ) {
echo '<option value="' . $rate->tax_rate . '">' . $rate->country . '</option>';
}
?>
</select>
我期待以下选项:
<option value="19">Deutschland</option>
<option value="20">Österreich</option>
德国
Österreich
问题是,我没有从
get\u rates()
函数返回任何结果。我没有找到能返回正确速率的函数。你知道我如何才能做到这一点吗?如果你已经配置了税率,那么它们可能不包括你登录的任何用户
尝试将$tax\u类
和$customer
参数输入您的WC\u tax::get\u rates
方法!具体而言,您的示例中的德国和/或Österreich税率适用于的客户和税务类别
查看实际功能定义:
TL;DR
$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 );
}
说明:
据我所知,给定一个特定的tax\u class
,您只能得到一个所有税率的列表,该列表用于通过tax\u class
列过滤woocommerce\u tax\u rates
表(当然,我们可以直接查询数据库,但我假设您希望使用woocommerce提供的函数来解决这个问题)。此外,“标准税率”没有税类
,即税类
列为空字符串
因此,如果您想获得每个类的所有税率,您需要使用WC\u tax::get\u rates\u for\u tax\u class($tax\u class)
。但是,如果你真的想要所有税率,而不考虑类别,你需要先得到所有税率类别,然后再得到每个类别的所有税率。不,只是不同地利用它。嘿,@Mr.Jo-你最终解决了吗?
$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 );
}