25
Feb

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

Category: Blog / 300 views

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

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

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


add_filter( 'woocommerce_package_rates','hide_shipping_when_free_is_available', 10, 2 );

function hide_shipping_when_free_is_available( $rates, $package ) {

// Only modify rates if free_shipping is present
if ( isset( $rates['free_shipping'] ) ) {

// To unset a single rate/method, do the following. This example unsets flat_rate shipping
unset( $rates['flat_rate'] );

// To unset all methods except for free_shipping, do the following
$free_shipping = $rates['free_shipping'];
$rates = array();
$rates['free_shipping'] = $free_shipping;
}

return $rates;
}

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


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