Multiple Packages for WooCommerce購物車分類外掛-免運和標題-客製修改之1

Multiple Packages for WooCommerce購物車分類外掛-免運和標題-客製修改之1

經手了許多網路購物網站,發現購物車分類幾乎是必備的功能,像商品出貨地不一樣、常溫和冷凍宅配、行銷及團購專區等等,運費不僅要分開計算,而且也會有不同的免運標準。安裝測試了幾個類似功能的外掛,Multiple Packages for WooCommerce算是我測過免費、有誠意且便於客製修改的好外掛。


Multiple Packages for WooCommerce基本設定

設定畫面很單純,不贅述。比較要注意的是Shipping Method Restrictions,這是用來指定每個運送類別(shipping class)要用的運送方法。我在這裡沒有把"免費運送"勾起來,不是說不用它,而是因為要修正程式才能達到客戶想要的用法(後述)。


運送分類標題修正

以shipping class作為購物車分類,預設顯示名稱會是運送方式、運送2等等。所以另外加上程式碼修正,把它換為shipping class的名稱。

修正方法,參考Change Shipping Package Title在function.php加入以下代碼:

function wc_change_pkg_titles( $current_title, $pkg_id, $package ) {
 
    // exit if package error
    if( ! isset( $package['contents'] ) || ! is_array( $package['contents'] ) ) return $current_title;
 
    foreach( $package['contents'] as $key => $item ) {
        $product = $item['data'];
        $shipping_class_id = $product->get_shipping_class_id();
        $shipping_class = get_term( $shipping_class_id );
    }
 
    return ( $shipping_class ) ? $shipping_class->name : $current_title;
         
}
add_filter( 'woocommerce_shipping_package_name', 'wc_change_pkg_titles', 10, 3 );

購物車分類免運修正

woocommerce有提供最低免運金額的功能,但它是以整台購物車計算,就算我們安裝了購物車的分類外掛也是如此。那要如何分開計算免運,就要再次進行程式修正。
使用外掛編輯器,修正multiple-packages-shipping.php檔案如下圖:

149行開始的修正代碼:

//$packages[ $n ]['ship_via'] = $package_restrictions[ $key ];
//use shipping_class slug to set free shipping;
$shipping_slug = explode('-',get_term($packages[ $n ]['contents'][0]['data']->get_shipping_class_id())->slug);
if ($packages[ $n ]['contents_cost']>=$shipping_slug[1] || array_sum( wp_list_pluck( $$value,'quantity'))>=$shipping_slug[2]) $packages[ $n ]['ship_via'] = array('free_shipping');
else $packages[ $n ]['ship_via'] = $package_restrictions[ $key ];

這段代碼是利用運送類別的代稱,來設定免運標準,第一個參數是自訂名稱,第二個參數是免運金額,第三個參數是免運數量。如:common-2500-99,表示common這運送類別,在金額達到2500元或數量達到99個,可以免運。

另外woocommerce內建的免運設定,就不需要設定最低金額了,請選擇"不提供"。


後記

woocommerce雖然設計有購物車分類(或叫運送包裹shipping package)相關延伸模組,但卻沒有實作這項功能,總之就是要做球給其它開發者。前面簡介說Multiple Packages for WooCommerce是有"誠意"的外掛,那是因為最重要的shipping class可以設為購物車分類,而其它免費外掛,看起來功能及設定很多,但八成都是付費功能,我測試過的:

Shipping Packages for WooCommerce也是一個測過有誠意的外掛,購物車可分類的項目也不少,只是因為要修正免運方法比較麻煩,所以我沒有用它。

現在是以附加修正程式來達到想要的功能,之後可能會以這外掛為基礎來重新編寫一個新外掛,方便日後使用及設定。

註:更多的woocommerce外掛或客製修改,請點選尚虎網科-woocommerce

好文分享給朋友

您可能還喜歡...