[英]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.