簡體   English   中英

在不使用區域或統一費率的情況下向 Woocommerce Shipping Class 添加費用

[英]Add fee to Woocommerce Shipping Class without the use of zones or flat rate

我很難找到我需要的東西,所以我求助於這里的大師!

我正在為我們簡單的非營利漫畫書店使用 Woocommerce 和一個名為 Table Rate Shipping Plus(由 mangohour 提供)的插件。 我們在瑞典使用基於重量的運輸作為標准,因此統一費率系統不是我們商店的選項。

我創建了一個“龐大”的運輸類別,我需要它在選擇該類別的產品時自動向購物車添加少量費用(僅一次,無需堆疊),而無需使用 woocommerce 的運輸區域和統一費率系統.

我似乎無法在任何地方找到任何可以執行這種簡單操作的東西,而且我對 php 的了解不夠,無法自己為 functions.php 編寫函數或過濾器。

有人可以指出我正確的方向嗎? 我一直盯着自己瞎...

如果我給你這段代碼放在functions.php中,你知道如何自定義嗎? 或者我應該把它變成一個簡單的插件給你?

這是它在我的本地 WP 測試環境中工作的視覺效果。

伊格


安裝到functions.php

向下滾動到實際代碼開始的位置,然后將整個塊復制並粘貼到主題文件夾 functions.php 的最底部。 只是一個簡單的復制和粘貼。


使用說明。

步驟 1. 在 WooComerce 設置 > 運輸 > 運輸類別中創建您的運輸類別。 例如,在我的測試站點上,我在 wooComerce 設置中創建了“bulky”和“light”運輸類。 記住您為第 2 步設置的 slug。

第 2 步。在EX1我將 WooCommerce 運輸類的區分大小寫的 slug 放在 ''. EX2我將您希望在結賬時顯示的費用描述放在“”中。 最后,在EX3您只需輸入費用的數值,這不在 '' 內。

//Example:
$shippingClasses['EX1'] = ['description' => 'EX2', 'fee' => EX3];

//How it will look:
$shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 7];
$shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 4];

就是這樣! 這就是你所要做的。


代碼

function fees_fees_fees() {

    $shippingClasses['bulky'] = ['description' => 'Bulky Fee', 'fee' => 5];
    $shippingClasses['light'] = ['description' => 'Light Fee', 'fee' => 7];

    foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
    $shipping_class = get_the_terms( $values['product_id'], 'product_shipping_class' );

        foreach($shippingClasses as $key => $val) {
        if ( isset( $shipping_class[0]->slug ) && in_array( $shipping_class[0]->slug, [$key] ) ) {
              WC()->cart->add_fee( __($val['description'], 'woocommerce'), $val['fee'] ); }
        }
    }
}
add_action( 'woocommerce_cart_calculate_fees', 'fees_fees_fees' );

暫無
暫無

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

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