สวัสดีครับผม สำหรับบทความนี้จะขอพูดถึงเรื่องเกี่ยวกับการแก้บั๊กในการใช้ Woocommerce หน่อยนะครับ คือเรื่องมันมีอยู่ว่า ผมพัฒนาเว็บไซต์ให้ลูกค้าสองท่าน โดยทั้งสองท่านต้องใช้งาน Woocommerce เพราะจะนำมามาเป็นเว็บขายของนั่นเอง แต่ทำไปทำมา ก็สังเกตว่า เอ๊ะ ทำไมตัวแบ่งหน้าที่เป็นคลิกไปยังหน้า 1, 2, 3, … อะไรเนี่ย มันไม่ทำงาน แล้วดูที่ url มันก็ขึ้น #038; แทนที่จะขึ้น & แบบนี้
คือถ้าเราคุ้นเคยกับ woocommerce เวลาเราคลิกแบ่งหน้า ตรง url มันควรจะเป็นประมาณนี้ครับ post_type=product&paged=3 อะไรทำนองนี้ แต่ในเคสนี้มันดันขึ้น post_type=product;#038;paged=3 ราวๆนี้ ซึ่งแน่นอน มันก็ใช้งานไม่ได้
หลังจากที่ลองนั่งหาข้อมูลดูแล้ว ผมก็ว่ามันน่าจะเป็นบั๊กของ Woocommerce ครับ เพราะโอกาสที่ธีมสองตัวจะมีข้อผิดพลาดเหมือนกัน น้อยมาก (ธีมหนึ่งผมพัฒนาเอง อีกธีมหนึ่งลูกค้าเตรียมไว้ให้)
และนี่คือวิธีการแก้ปัญหานะครับ
ให้เราเปิดไฟล์ pagination.php ที่อยู่ในโฟลเดอร์ woocommerce/loop/ มาแล้วแก้โค้ดตรง nav ให้เป็นแบบนี้ครับ
<nav class="woocommerce-pagination"> <?php echo str_replace( '#038;','&', paginate_links( apply_filters( 'woocommerce_pagination_args', array( 'base' => esc_url( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', htmlspecialchars_decode( get_pagenum_link( 999999999 ) ) ) ) ), 'format' => '', 'current' => max( 1, get_query_var( 'paged' ) ), 'total' => $wp_query->max_num_pages, 'prev_text' => '←', 'next_text' => '→', 'type' => 'list', 'end_size' => 3, 'mid_size' => 3 ) ) ) ); ?> </nav>
โดยโค้ดข้างต้น จะเป็นการ Replace #038; ให้กลายเป็น & นั่นเอง
ถ้าใครเจอเหตุการณ์แบบนี้ก็ลองนำโค้ดนี้ไปใช้ดูนะครับผม