在 WooCommerce 中,我的感谢页面出现问题(客户下订单后)。我尝试手动更改它,但问题是代码是在一个我找不到的未知文件中生成的。
<tfoot>
<?php
foreach ( $order->get_order_item_totals() as $key => $total ) {
?>
<tr>
<th scope="row"><?php echo $total['label']; ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
}
?>
</tfoot>
此代码为我提供订单中的所有信息,例如优惠券、运费等。
在这张图片上,我想替换黑色边框矩形中的文本(这里
'Gesamt:'
的意思是 "Total"
为 "Total inkl. vat"
)
我还想删除红色边框的矩形块:
"Inkl. 19% MwSt."
。
可以吗?
我该怎么办?
谢谢。
这里是在感谢页面中加载的
woocommerce/order/order-details.php
模板的结尾摘录。
要覆盖
循环显示的'Total'
文本,方法foreach
应用于get_order_item_totals()
对象(生成$order
数组),你必须添加您的网站使用的每种语言的条件。在我的代码中你有英语和德语。key/values
在您的活动主题中,转到
woocommerce > order
,然后打开/编辑
order-details.php
模板文件。
将模板的末尾替换为:
<tfoot>
<?php
$order_item_totals = $order->get_order_item_totals();
$count_lines = count($order_item_totals) - 1;
$count = 0;
foreach ( $order_item_totals as $key => $total ) {
$count++;
// The condition to replace "Total:" text in english and german
if( $total['label'] == 'Total:' || $total['label'] == 'Gesamt:')
$total_label = __( 'Total inkl. vat:', 'woocommerce' );
else
$total_label = $total['label'];
// End of the condition
?>
<tr>
<th scope="row"><?php echo $total_label; // <== == Replaced $total['label'] by $total_label ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
// this should avoid displaying last line
if( $count >= $count_lines ) break;
}
?>
</tfoot>
</table>
<?php do_action( 'woocommerce_order_details_after_order_table', $order ); ?>
<?php if ( $show_customer_details ) : ?>
<?php wc_get_template( 'order/order-details-customer.php', array( 'order' => $order ) ); ?>
<?php endif; ?>
现在你可以保存了,你就完成了......
此代码经过测试并且可以工作。
参考资料:
嘿,我想这对你有用
只需确保
inkl. 19%....
书写正确即可。
foreach ( $order->get_order_item_totals() as $key => $total ) {
?>
<tr>
<th scope="row"><?php echo ($total['label']=='inkl. 19% Mwst.'?'Vat Only':$total['label']); ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
}
<?php
global $woocommerce, $post;
$order = new WC_Order($post->ID);
?>
<table>
<tfoot>
<?php
foreach ( $order->get_order_item_totals() as $key => $total ) {
// The condition to replace "Total:" text in english and german
if( $total['label'] == 'Total'){
$total_label = __( 'Total inkl. vat:', 'woocommerce' );
}
else{
$total_label = $total['label'];
}
// End of the condition
?>
<tr>
<th scope="row"><?php echo $total_label; // <== == Replaced $total['label'] by $total_label ?></th>
<td><?php echo $total['value']; ?></td>
</tr>
<?php
}
?>
</tfoot>
</table>
<?php do_action( 'woocommerce_order_details_after_order_table', $order ); ?>
<?php if ( $show_customer_details ) : ?>
<?php wc_get_template( 'order/order-details-customer.php', array( 'order' => $order ) ); ?>
<?php endif; ?>