Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我如何获得WooCommerce中所有可用的税率?_Php_Wordpress_Woocommerce - Fatal编程技术网

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 );
}