2
Feb

แก้บั๊ก Woocommerce pagination คลิกหน้าต่อไปไม่ได้

Category: Blog / 167 views

สวัสดีครับผม สำหรับบทความนี้จะขอพูดถึงเรื่องเกี่ยวกับการแก้บั๊กในการใช้ 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' => '&larr;',
'next_text' => '&rarr;',
'type' => 'list',
'end_size' => 3,
'mid_size' => 3
) ) ) );
?>
</nav>

โดยโค้ดข้างต้น จะเป็นการ Replace #038; ให้กลายเป็น & นั่นเอง
ถ้าใครเจอเหตุการณ์แบบนี้ก็ลองนำโค้ดนี้ไปใช้ดูนะครับผม

แหล่งอ้างอิง

Tags:


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