WooCommerce - 在感谢订单收到页面上自定义“总计”文本

问题描述 投票:0回答:3

在 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>

此代码为我提供订单中的所有信息,例如优惠券、运费等。

enter image description here

在这张图片上,我想替换黑色边框矩形中的文本(这里

'Gesamt:'
的意思是
"Total"
"Total inkl. vat"

我还想删除红色边框的矩形块:

"Inkl. 19% MwSt."

可以吗?
我该怎么办?

谢谢。

php wordpress woocommerce gettext orders
3个回答
4
投票

这里是在感谢页面中加载的

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; ?>

现在你可以保存了,你就完成了......

此代码经过测试并且可以工作。

参考资料:


1
投票

嘿,我想这对你有用

只需确保

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
}

0
投票
<?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; ?>
© www.soinside.com 2019 - 2024. All rights reserved.