Query ในหน้านั้น เราจะเพิ่ม Parameter เข้าไปยังไง : WordPress

อันนี้ยกตัวอย่างจากที่เจอมาเลย คือในหน้า Archive อยากให้มันเรียงตามชื่อหัวข้อ ไม่ได้อยากให้มันเรียงตามวันที่ แค่เพิ่ม parameter orderby=title เข้าไปทำยังไง

อย่างแรกก็ประกาศ global $query_string; เพื่อที่เราจะได้นำ $query_string มาใช้งาน โดยมันคือ ค่า parameter ที่ใช้ในการ query_posts() ของแต่ละหน้านั่นละ แต่เราเรียกมาเพื่อที่จะเพิ่มค่า parameter ที่เราต้องการเข้าไป ส่วนเราสามารถปรับแต่งการเรียกต่างๆ ได้จากหัวข้อนี้ query_posts

[WordPress] สร้างหัวข้อบทความแนะนำ (Featured Post) แบบง่าย ๆ

ในหน้า ฝากคำถาม ของผม คุณ VattanaLapanich ได้ถามว่า

อยากทำ featured post คล้ายๆ กับของ it24hrs ที่พี่เม่น Modified ไว้ครับ

คือ ผมเองก็ไม่รู้หรอกครับ ว่าพี่เม่นเค้าเขียนไว้ยังไง แล้วก็ไม่มี code ของเว็บด้วย แต่ผมมีวิธีง่าย ๆ มานำเสนอครับ นั่นก็คือ

สร้าง Category ชื่อ “บทความแนะนำ”

วิธีง่าย ๆ ไม่ต้องคิดมากครับ สร้าง Category มาใหม่เลยครับ ให้ชื่อว่า “บทความแนะนำ” ก็แล้วกัน

[Wordpress] สร้างหัวข้อบทความแนะนำ (Featured Post) แบบง่าย ๆ [1]

ใน slug ก็ใส่อะไรที่มันสื่อถึงตัว category ดังนั้นเลยตั้งว่า featured-post

[Wordpress] สร้างหัวข้อบทความแนะนำ (Featured Post) แบบง่าย ๆ [2]

แล้วก็เขียน code ในลักษณะนี้ เพื่อนำไปวางแปะในส่วนที่จะโชว์บทความแนะนำของเรา

[php]
<?php

$args = array(
‘category_name’ => ‘featured-post’,
‘posts_per_page’ => 3
);

$feature_query = new WP_Query($args);

if( $feature_query -> have_posts() ) : while ( $feature_query->have_posts() ) : $feature_query->the_post();

// ใส่ code ที่จะแสดงผลลงไป

endwhile;
endif;
wp_reset_postdata();

?>
[/php]

โดย category_name ก็มาจาก slug ที่เราตั้ง และ posts_per_page นั้นคือเราต้องการโชว์บทความแนะนำมากที่สุดกี่บทความ ในตัวอย่างใส่ไว้เป็นจำนวน 3 แต่ปรับเปลี่ยนได้ตามที่ต้องการครับ

เสร็จแล้ว ก็ไปเลือกบทความของเราที่จะโชว์เป็นบทความแนะนำให้อยู่ใน category ที่เราสร้างขึ้นมา เท่านี้เราก็จะได้หัวข้อบทความแนะนำแล้วครับ

แก้ปัญหาข้อมูลเพี้ยนจากการ query

ถ้าเขียน theme แล้วเกิดต้องเรียก query หลาย ๆ ครั้ง แบบทีอาจจะเกิดการผิดพลาดในการเรียกใช้ข้อมูล

ปัญหานี้ได้ลองถามพี่จ๋ง (@warong) ได้คำตอบมาว่า ให้ใส่

[php]
<?php $temp_query = clone $wp_query; ?>
[/php]

ก่อนหน้าที่เราจะ query ข้อมูล และใส่

[php]
<?php $wp_query = clone $temp_query; ?>
[/php]

หลังจากที่ใช้งานข้อมูลที่ query มาเสร็จแล้ว