簡體   English   中英

Woocommerce的管理訂單詳情頁如何顯示全價(含稅)?

[英]How to display full price (including tax) in Admin Order Detail Page in Woocommerce?

在 Woocommerce 中,在管理訂單詳細信息頁面中,我希望顯示客戶為每個項目行支付的全價(含稅),以及“不含稅”和“稅”。 令人驚訝的是,它不是 woo-commerce 的核心選項。 到目前為止,我已經關注了 Woocommerce - 在管理訂單摘要中顯示全價(含稅)Woocommerce - 管理訂單詳細信息頁面 我已經嘗試了兩個不同的代碼片段(感謝分享它的人),並且它可以很好地添加一個包含幾乎所有情況的價格的列

除了,它會導致退款訂單出現致命錯誤/中斷,這對您可以想象的商業網站不利。

你可以幫幫我嗎? 我很新,正在學習 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 );

我想對於退款的訂單,某些功能不同或某些金額為負數,也許這就是此代碼段導致致命錯誤的原因? 也許在代碼中添加條件會更容易,而不是在訂單退款時顯示含稅價格? 但是我不知道該怎么辦...

非常感謝您的寶貴時間!

剛剛找到了一些可能對您有所幫助的鈎子。

首先,我們使用 woo 在html-order-items.php 中提供的鈎子添加一個額外的表 header

 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添加額外的表字段並獲取產品價格。 我做了幾次檢查。 首先,您應該檢查當前的 object 是否為產品,因為在訂單項目中不僅有產品,還有,運輸 - 運輸類型,費用 - 費用類型rudrastyh 在這里做一個很好的解釋

第二個檢查是當我顯示總價格時,我檢查產品 $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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM