WooCommerce: Free Shipping By Quantity (Free) – No Plugin

WooCommerce: 买超过X件就免邮

这篇文章是分享我们是如何设定Woocommerce里,当客户买超过了X个数量就可以享受免邮费的方法。这是不需要通过安装Plugin的方法就能拿做到了。只要通过简单的PHP和跟着以下的步骤就可以做到了的。而且你还可以自己设定要买超过多少的数量就可以免邮了的哦。

还有另外一种方法就是下载Plugin。当然这里我也会和你分享哪些Plugins是有这个功能的。

1. 准备工作 – PHP的方式

在开始之前,我们需要在Woocommerce里已经开始设定你的东马和西马的邮费,包括免邮的设定(如果已经设定了就可以Skip掉这里)。因为没有做好这些邮费的设定是做到的,所以一定要设定好邮费和Free Shipping的设定先。

2. 设置Conditions & 一些讲解

假设我的网店的邮费的收费和免邮的条件是;-

  • 寄西马(West Malaysia)时; – 买少过3件就就要付RM 10.00的邮费(Shipping Fees),多过3件就免邮(Free Shipping)
  • 寄东马(East Malaysia)时; – 买少过5件就就要付RM 15.00的邮费(Shipping Fees),多过5件就免邮(Free Shipping)

这是我的网店的Shipping 条件。请大家依据自己的shipping条件来设定

然后我们必须到Woocommerce -> Settings -> Shipping这里依据我们刚刚做的设定,设定东马Shipping feesFree Shipping以及一个西马Shipping FeesFree Shipping

图上 – 就是我们设定好了我们的West Malaysia和East Malaysia的Shipping methods。在Zone Name那里有 West Malaysia和East Malaysia, West Malaysia的Region里我们include了马来半岛的州属,而Shipping methods里我们设定了Shipping Fees 和Free Shipping。同样的East Malaysia,我们也Include了东马的州属以及East Malaysia的Shipping Fees和Free Shipping。

先设定好这些Shipping Methods的原因是因为后面我们需要找到这些各别Shipping Methods的Label No了才可以做Coding。每个Shipping Method都有自己的Label No的。West Malaysia的Shipping fees和East Malaysia的Shipping Fees是不同的Label No。同样的West Malaysia的Free Shipping和East Malaysia的Free Shipping也是拥有自己的Shipping Label No的。

我们需要找到各自的Shipping Label No,然后再把这些Shipping Label No 替代进去以下的Coding里。这里要注意的是每个人的Shipping Label 的Number是不一样的,所以等下下面的Code里的Shipping Label的号码要换掉的。

3. 该如何找到Flat_Rate/Free Shipping的代码?

来到Cart Page或Check Out Page那里。(如果在Cart Page没有看到邮费选项的话,可以输入你的post code或在Check Out Page那里输入地址了就会显示了的。)在Shipping那里Right Click然后点击Inspect。要记得Add 产品进Cart先,不然是不会显示出来的。

Shipping 的选项(1)那里,滑鼠右键点击一次。然后回看到(2),选Inspect。过后Chrome的右手边会出现如上图的Coding页面。如果Inspect后的不是显示如上图,要去选Elements(3)了后才会显示这排Coding。

(注:这是Google chrome。如果是用Edge或其他的Browser,那个Layout会有点不一样的)
(注2:有些人的Chrome按了Inspect 后,那个Coding的页面是显示在Browser的下方。)

在那排Coding里找 <label for=”shipping_method_flat_rate…..”> ,然后用滑鼠指着那个Coding。指到(2)出现蓝色Highlight,那么(1)就是该Shipping的 flat_rate号码了。比如这个GDex WM: RM10.00的shipping label 就是 【flat_rate:5】。我们就这样以此类推的找Free Shipping的Label了。不过Free Shipping的Shipping Label是start with 【free_shipping:X】

找完西马的后,要记得找东马的。因为西马和东马的shipping label是不一样的。

4. 告诉WooCommerce我们的要求

通过以下的Code就可以告诉Woocommerce这是我的需求了。当让这个是我的设定来的。而你们只要更改这些里的X就可以了 – [‘flat_rate:x‘],[‘free_shipping:x‘] (WC()->cart->get_cart_contents_count() xx)

依据我们刚刚的设定 –

  • 寄西马(West Malaysia)时; – 买少过3件就就要付RM 10.00的邮费(Shipping Fees),多过3件就免邮(Free Shipping)
  • 寄东马(East Malaysia)时; – 买少过5件就就要付RM 15.00的邮费(Shipping Fees),多过5件就免邮(Free Shipping)

当客户是邮寄西马时,买少过3件(WC()->cart->get_cart_contents_count() <3),就显示邮费1([‘flat_rate:1’]),关闭邮费 2([‘free_shipping:2’])。当超过3件了后,就显示邮费2([‘free_shipping:2’])和关闭邮费1([‘flat_rate:1’])

For East Malaysia这个部分的设定是当客户是东马时,买少过5件(WC()->cart->get_cart_contents_count() <5),就显示邮费3([‘flat_rate:3’]),关闭邮费4([‘free_shipping:4’])。当超过5件了后,就显示邮费4([‘free_shipping:4’])和关闭邮费3([‘flat_rate:3’])

/**
 * Shipping by Quantity | WooCommerce
 */
  
add_filter( 'woocommerce_package_rates', 'shennyq_wc_tiered_shipping', 9999, 2 );
    
function shennyq_wc_tiered_shipping( $rates, $package ) {
     
     if ( WC()->cart->get_cart_contents_count() <3 ) {
       
         if ( isset( $rates['flat_rate:1'] ) ) unset( $rates['free_shipping:2'] );
       
     } else {
       
         if ( isset( $rates['free_shipping:8'] ) ) unset( $rates['flat_rate:5'] );
       
     } 
/**
 * For East Malaysia
 */	
	if ( WC()->cart->get_cart_contents_count() <5 ) {
       
         if ( isset( $rates['flat_rate:3'] ) ) unset( $rates['free_shipping:4'] );
       
     } else {
       
         if ( isset( $rates['free_shipping:4'] ) ) unset( $rates['flat_rate:3'] );
       
     } 
    
     return $rates;
    
}

4. 测试结果

植入了Coding了后,接下来就是先测试,看结果。

Q1: 这个Code要写在哪里? – Code Snippet

我们需要安装一个叫 Code Snippets 的plugin来让我们植入这个Coding的。 先去Plugins-> Add New 然后输入Code Snippets,找到图下的Logo的 Code Snippet, Install 然后Activate这个Plugin。

1.2. 进入Code Snippet

Activate了后,可以在我们的左手边这个Menu里找到 Snippets(如下图)。然后点击Add New。

1.3. Code Snippet

把上面的Coding Paste进来这里。Title放一个自己明白是什么的Title就可以了。Description 和 Tag要不要放都无所谓的。然后点击Save Change & Activate就可以了。

Leave a Reply

Your email address will not be published. Required fields are marked *