code update:
add_action( \'woocommerce_grouped_product_list_before_price\',
\'woocommerce_grouped_product_tax_on_single\', 10, 1, $child_product, $mode );
function woocommerce_grouped_product_tax_on_single( $child_product, $mode = null ) {
//uncomment next line and choose one of the output options from »switch case "{OPTION}"«
//$mode = \'tax-name-rate-amount\';
$_taxobj = new WC_Tax();
$obj = $_taxobj->get_shop_base_rate($child_product->get_tax_class());
$i_or_e = get_option(\'woocommerce_prices_include_tax\') == \'no\' ? \'excl.\' : \'incl.\';
?>
<td class="grp_tax">
<?php
foreach ( $obj as $sobj ) {
$stax = woocommerce_price( $sobj[\'rate\'] / 100 *
( get_option(\'woocommerce_prices_include_tax\') == \'no\' ?
$child_product->get_price_including_tax() :
$child_product->get_price_excluding_tax() ) );
switch ($mode) {
case null:
$format = " %s %s";
$variables = array($i_or_e, $sobj[\'label\']);
break;
case "tax-name":
$format = " %s %s";
$variables = array($i_or_e, $sobj[\'label\']);
break;
case "tax-name-rate":
$format = " %s %s %s%%";
$variables = array($i_or_e,
$sobj[\'label\'],
number_format($sobj[\'rate\']));
break;
case "tax-name-rate-amount":
$format = " %s %s (%s%% - %s)";
$variables = array($i_or_e,
$sobj[\'label\'],
number_format($sobj[\'rate\']),
$stax);
break;
}
$output = vsprintf($format, $variables);
}
echo $output;
?>
</td>
<?php
}
更新后的代码基本相同,但有一些新特性。正如@noxoc指出的那样,使用钩子会更好。上述代码使用
woocommerce_grouped_product_list_before_price
要挂接的操作。这个已经在内部定义
grouped.php
. 不幸的是,在我看来,这读起来并不好,因为你会得到这样的东西»
tax information
price
«,就我个人而言,我希望它读起来像»
price
tax information
«。为此,我添加了一个操作
woocommerce_grouped_product_list_after_price
在…内
grouped.php
:
//this is the existing action
<?php do_action ( \'woocommerce_grouped_product_list_before_price\',
$child_product[\'product\'] ); ?>
//this is the table cell for the price
<td class="price">
{SOME CODE}
</td>
//this is the NEW action you have to add yourself
<?php do_action ( \'woocommerce_grouped_product_list_after_price\',
$child_product[\'product\'] ); ?>
正如您所看到的,新操作几乎复制了现有操作。如果添加了操作,则可以更改
add_action()
在上面的代码中输入一行以使用它:
add_action( \'woocommerce_grouped_product_list_after_price\',
\'woocommerce_grouped_product_tax_on_single\', 10, 1, $child_product, $mode );
此外,我还添加了一些选项来选择在输出上显示哪些信息。您必须设置
$mode
变量。这应该是不言自明的-请参阅代码中的注释。例如,这可以用于在后端的选项页面上设置变量。除此之外,当然可以更改输出的格式,只需按照代码中的用例进行操作即可
code: $_taxobj = new WC_Tax();
$obj = $_taxobj->get_shop_base_rate($child_product[\'product\']->get_tax_class());
$i_or_e = get_option(\'woocommerce_prices_include_tax\') == \'no\' ? \'excl.\' : \'incl.\';
foreach ( $obj as $sobj ) { printf(" %s %s%% %s", $i_or_e, number_format($sobj[\'rate\']), $sobj[\'label\']); }
这将进入
grouped.php
位于
{THEME-FOLDER}/woocommerce/single-product/add-to-cart/
内部
<td class="price">{CONTENT INSIDE}</td>
密码代码能够区分
included/excluded tax
根据
tax rate
以及
tax label
对于集团内部的简单产品。