ช่วงนี้มีโปรเจ็คเกี่ยวกับ 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 เพื่อนร่วมทีมโปรแกรมเมอร์สำหรับเราๆคับ