【问题标题】:How to display full price (including tax) in Admin Order Detail Page in Woocommerce?如何在 Woocommerce 的管理订单详细信息页面中显示全价(含税)?
【发布时间】:2021-12-07 11:34:03
【问题描述】:

在 Woocommerce 中,在“管理订单详细信息”页面中,除了“不含税”和“税”之外,我希望显示客户为每个项目行支付的全价(含税)。 令人惊讶的是,它不是 woo-commerce 的核心选项。 到目前为止,我已经关注了Woocommerce - Display full price (incl. tax) in admin order summaryWoocommerce - Admin Order Detail Page。 我已经尝试了两种不同的代码 sn-ps(感谢分享它的人),它可以很好地添加一个包含几乎所有情况下的含税价格的列

除了,它会导致致命错误/退款订单中断,这对您可以想象的商业网站不利。

你能帮帮我吗?我是新手,正在学习 PHP,所以我不是专家,我找不到代码中的问题。

现在我正在使用 Honza Kopecky(谢谢!)在https://stackoverflow.com/a/69532601/17338625 中提供的代码:

function action_woocommerce_admin_order_item_values( $null, WC_Order_Item $item) {
$val = floatval($item->get_total()) + floatval($item->get_total_tax());
?>
<td class="item_full_cost" data-sort-value="<?= $val ?>">
    <div class="view" style="font-weight: bold; text-align: right; padding-right: 10px;">
        <?= wc_price($val, ['currency' => $item->get_order()->get_currency()]) ?>
    </div>
    <?php
    $refunded = $item->get_order()->get_total_refunded_for_item( $item->get_id() );

    if ( $refunded ) {
        echo '<small class="refunded">-' . wc_price( $refunded, array( 'currency' => $item->get_order()->get_currency() ) ) . '</small>';
    }
    ?>
</td>
<?php
};
add_action( 'woocommerce_admin_order_item_values', 'action_woocommerce_admin_order_item_values', 10, 2 );


function action_woocommerce_admin_order_item_headers( $order ) {
    echo '<th class="line_full_cost sortable" data-sort="float" style="font-weight:bold;text-align: right;">' . __('Price incl. VAT') .'</th>';
};
add_action( 'woocommerce_admin_order_item_headers', 'action_woocommerce_admin_order_item_headers', 10, 3 );

我想对于退款的订单,某些功能不同或某些金额为负数,也许这就是此代码 sn-p 导致致命错误的原因? 也许在代码中添加条件会更容易,而不是在订单退款时显示含税价格?但是我不知道该怎么做...

非常感谢您的宝贵时间!

【问题讨论】:

    标签: php woocommerce admin


    【解决方案1】:

    刚刚找到了一些可能对您有所帮助的钩子。

    首先我们使用 woo 在 html-order-items.php

    中提供的钩子添加一个额外的表头
     add_action('woocommerce_admin_order_item_headers', 'order_header',10,1);
    
    function order_header($order){
        ?>
            <th class="total_with_vat sortable" colspan="2" data-sort="float"><?php esc_html_e( 'Total + Vat', 'woocommerce' ); ?></th>
        <?php
    }
    

    然后使用 woocommerce_admin_order_item_values 添加额外的表字段并获取产品价格。我做了几次检查。首先,您应该检查当前对象是否为产品,因为在 order-items 中不仅有产品,还有,shipping - shipping type, fee - fee type rudrastyh make a greak explanation here

    第二个检查是当我显示总价格时,我检查产品 $item['total'] 是否等于 0,因为它可能是礼物或免费的,因此无需显示价格。

        add_action('woocommerce_admin_order_item_values', 'show_total', 10, 3);
    
    function show_total( $product, $item, $item_id ){
        if (!is_a($product, 'WC_Product')){
            return;
        }
    ?>
            <td class="item_total_cost" colspan="2" width="1%">
            <div class="view">
                <?php
                echo ($item['total'] >  0) ? $product->get_price() . get_woocommerce_currency_symbol() : $item['total'] . get_woocommerce_currency_symbol() ;
                ?>
            </div>
        </td>
    <?php
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2021-10-19
      • 1970-01-01
      • 2022-01-15
      • 2020-09-28
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多