25
Feb

วิธีซ่อนค่าจัดส่งอื่นๆ ในกรณีที่ส่งฟรี สำหรับ Woocommerce

Category: Blog / 363 views

ช่วงนี้มีโปรเจ็คเกี่ยวกับ Ecommerce อยู่หลายตัวครับ ซึ่งแน่นอนครับว่าเว็บทุกตัวที่ผมทำก็พัฒนาจาก WordPress ทั้งนั้น และตัวระบบขายของผมก็ใช้ Woocommerce มาเป็นตัวหลักในการใช้งาน เพราะมันใช้งานง่าย ตอบโจทย์ดีครับ ทีนี้ในแต่ละโปรเจ็คมันก็จะมีโน่นมีนี่มาให้เราได้ปรับแต่งต่างกันไป ซึ่งผมก็รวบรวมข้อมูลต่างๆลงในบันทึกส่วนตัว และจะนำมาทยอยเขียนลงในบทความครับ ว่าแต่ละเคสทำอย่างไร แก้ปัญหาแบบไหน

สำหรับบทความนี้ สืบเนื่องมาจากลูกค้าบอกว่า เว็บของลูกค้านั้น มีการกำหนดค่าจัดส่งไว้ครับว่า ค่าส่งปกติคิดที่ 100 บาท แต่ถ้าเมื่อไหร่ก็ตามที่ยอดสั่งซื้อเกิน 350 บาท จะจัดส่งให้ฟรี  ซึ่งในตัว Woocommerce มันจะโชว์อยู่ทั้งสอง options ให้ลูกค้าเลือกครับ ทั้งๆที่ในความเป็นจริงถ้ามันเข้าเงื่อนไขส่งฟรีมันก็ควรจะเลือกตัวฟรีให้อัตโนมัติ ถ้าไม่ถึงก็เลือกตัวส่งแบบ Flat Rate (ค่าส่งปกติ) ให้ทันที

วิธีการแก้ไขนั้น สามารถแก้ไขได้ด้วยวิธีการเขียนโค้ดด้านลางนี้ลงไปในไฟล์ functions.php ที่อยู่ในโฟลเดอร์ธีมของเราครับ (อัพเดทโค้ดล่าสุดสำหรับรองรับเวอร์ชั่น 2.6 ครับ)


/**
 * Hide shipping rates when free shipping is available.
 * Updated to support WooCommerce 2.6 Shipping Zones.
 *
 * @param array $rates Array of rates found for the package.
 * @return array
 */
function my_hide_shipping_when_free_is_available( $rates ) {
 $free = array();
 foreach ( $rates as $rate_id => $rate ) {
 if ( 'free_shipping' === $rate->method_id ) {
 $free[ $rate_id ] = $rate;
 break;
 }
 }
 return ! empty( $free ) ? $free : $rates;
}
add_filter( 'woocommerce_package_rates', 'my_hide_shipping_when_free_is_available', 100 );

เพียงแค่นี้ระบบเว็บของเราก็จะไม่ขึ้นตัวเลือกระบบการจัดส่งให้มันซ้ำซ้อนแล้วหละครับ ลองนำไปปรับใช้กันดูนะครับ ซึ่งโค้ดนี้ต้องขอบคุณ StackOverflow เพื่อนร่วมทีมโปรแกรมเมอร์สำหรับเราๆคับ


Phraisohn Siripool is a Graphic Designer and Website Developer. Contact Buksohn for Your Business Endeavours