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可以設為購物車分類,而其它免費外掛,看起來功能及設定很多,但八成都是付費功能,我測試過的:
- Table Rate Shipping Method for WooCommerce by Flexible Shipping
- Flat Rate Shipping Plugin For WooCommerce
- WooCommerce Advanced Free Shipping
- Conditional shipping & Advanced Flat rate shipping rates / Flexible shipping for WooCommerce shipping
- Table Rate Shipping for WooCommerce
Shipping Packages for WooCommerce也是一個測過有誠意的外掛,購物車可分類的項目也不少,只是因為要修正免運方法比較麻煩,所以我沒有用它。
現在是以附加修正程式來達到想要的功能,之後可能會以這外掛為基礎來重新編寫一個新外掛,方便日後使用及設定。
註:更多的woocommerce外掛或客製修改,請點選尚虎網科-woocommerce