แสดงเรื่องที่ต้องการ ด้วย WP_Query ตอนที่ 1

เกริ่นนำ

บทความนี้เหมาะสำหรับผู้ที่สนใจการ สร้างธีมเวิร์ดเพรส ซึ่งต้องมีความรู้ 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 นะครับ

ส่วนในบทความต่อไปจะมาอธิบายคำสั่งอื่นๆ ต่อครับผม 🙂


หมายเหตุ: คำถามผ่านเฟซบุคอาจมีการตกหล่น แนะนำให้ติดต่อผ่าน อินบ๊อกซ์ หรือ เว็บบอร์ด นะครับ

Copyright © 2016-2019. All rights reserved.