เกริ่นนำ
บทความนี้เหมาะสำหรับผู้ที่สนใจการ สร้างธีมเวิร์ดเพรส ซึ่งต้องมีความรู้ HTML กับ PHP ระดับเบื้องต้นนะครับ
ในบทเรียนออนไลน์สำหรับสมาชิก Seed Kit แนะนำให้ดู บทที่ 8 ก่อนนะครับ จะมีพื้นฐานการสร้างธีมไว้ให้แล้ว
ส่วนบล็อกนี้ จะมาเพิ่มประเด็นต่อว่า บางครั้ง ในไฟล์เทมเพลตต่างๆ (เช่นหน้าแรก – front-page.php) ถ้าเราต้องการนำโพสต์ (เรื่อง) จากหมวดหมู่ที่เราเลือกไว้มาแสดงต้องทำอย่างไร? หรือ ต้องการกำหนดให้แสดงแค่ 5 โพส, ให้เรียงตามวันที่, ให้เริ่มจากลำดับที่ 2 ฯลฯ ต้องทำยังไง?
คำตอบ: การแสดงโพสต์ทั้งหลาย ให้ใช้ WP_Query
มาทำความรู้เจ้าตัว คำสั่ง WP_Query กันก่อน มันคือ คำสั่งมาตรฐานของเวิร์ดเพรสที่ใช้สำหรับดึงข้อมูลโพสต่างๆ ที่เราเขียนไว้ที่หลังบ้านมาแสดงนะครับ ซึ่งสามารถตั้งเงื่อนไขในการแสดงได้หลากหลาย เช่น ดึงโพสหมวดหมู่นี้มา ดึงมาจำนวนกี่โพส เรียงตามวันที่ เป็นต้น
ตัวอย่างโค้ด
ในธีม Seed จะแอบใส่โค้ดตรงนี้ไว้ใน front-page.php ให้เป็นตัวอย่างแล้วนะครับ
<?php $args = array( 'category_name' => 'news', 'orderby' => 'date', 'posts_per_page' => 4 ); $the_query = new WP_Query( $args ); while ( $the_query->have_posts() ) : $the_query->the_post(); the_title(); the_content(); endwhile; wp_reset_postdata(); ?>
อธิบายตัวอย่างโค้ด
ตัวอย่างโค้ด | คำอธิบาย |
---|---|
ตัวแปร $args | ตัวแปรที่สร้างไว้สำหรับเก็บค่าต่างๆ ที่จะมากำหนดเงื่อนไขสำหรับแสดง |
คำสั่ง ‘category_name’ => ‘news’ | ค่าที่กำหนดให้นำโพสต์ในหมวดหมู่ news มาแสดง สามารถเปลี่ยนให้เป็นหมวดหมู่ที่เราต้องการได้ โดยดูจาก slug ของหมวดหมู่ที่เราต้องการ |
คำสั่ง ‘orderby’ => ‘date’ | กำหนดให้โพสต์แสดงเรียบตามวันที่เก่าใหม่ |
คำสั่ง ‘posts_per_page’ => 4 | กำหนดให้แสดงจำนวน 4 โพสต์เท่านั้น (ถ้าเราเขียนโค้ดซับซ้อนขึ้น เราจะให้แสดงหลายหน้าก็ได้ โดยแต่ละหน้า แสดงแค่ 4 โพสต์) |
คำสั่ง $the_query = new WP_Query( $args ); | การดึงโพสต์ต่างๆ ตามเงื่อนไขที่เราตั้ง มาเก็บไว้ที่ตัวแปร $the_query |
คำสั่ง while ( $the_query->have_posts() ) : $the_query->the_post(); | คำสั่งวนลูปเพื่อดึงข้อมูลมาแสดง ข้อมูลเพิ่มเติม |
คำสั่ง the_title(); | การนำหัวข้อของโพสนั้นๆ มาแสดง ข้อมูลเพิ่มเติม |
คำสั่ง the_content(); | การนำเนื้อหาของโพสนั้นๆ มาแสดง ข้อมูลเพิ่มเติม |
คำสั่ง endwhile; | การปิดการวนลูป |
คำสั่ง wp_reset_postdata(); | การรีเซ็ทค่าต่างๆ ในการวนลูปเพื่อจะได้ไม่กระทบกับลูปอื่นที่เราทำต่อไป |
ตัวแปรเงื่อนไข WP_Query ที่ใช้เป็นประจำ
ตัวแปร | คำอธิบาย |
---|---|
‘category_name’ => ‘your_category’ | การเลือกหมวดหมู่ที่กำหนดมาแสดง |
‘post_type’ => ‘your_posttype’ | การเลือก post_type ที่กำหนดมาแสดง |
‘tag’ => ‘your_tag’ | การเลือก tag ที่กำหนดมาแสดง |
‘p’ => 6 | การเลือกไอดีของโพสต์ที่กำหนดมาแสดง |
‘posts_per_page’ => 4 | การกำหนดให้แสดงจำนวน 4 โพส |
‘offset’ => 3 | การกำหนดให้ไม่ต้องแสดง 3 โพสแรก |
‘order’ => ‘ASC’ | การกำหนดให้โพสแสดงเรียงจากน้อยไปมาก เช่น 1, 2, 3, a, b, c |
‘orderby’ => ‘rand’ | การกำหนดให้โพสแสดงแบบสุ่ม |
ตัวแปรข้างต้นคือตัวแปรที่ใช้เป็นประจำ แต่ยังมีตัวแปรอื่นๆ ที่สามารถใช้ได้อีกจำนวนมาก ลองเข้าไปศึกษาเพิ่มเติมได้ที่ Codex WordPress นะครับ
ส่วนในบทความต่อไปจะมาอธิบายคำสั่งอื่นๆ ต่อครับผม 🙂