7 Blogger

สวัสดีเราเอง 7 ไง (จำไม่ได้เหรอ !?!?!)

May 3, 2007

บังคับการแสดง Entry ด้วย query_posts()

Written by
7

ตามปรกติ เราสามารถ Set การแสดง Entry ได้ที่หน้า Reading Option ว่าจะให้แสดงผลกี่ Entry ต่อหน้าได้ แต่ว่าทุกหน้าจะแสดงเหมือนกันหมด ไม่ว่าหน้านั้นจะเป็นหน้าใด ซึ่งบางครั้งก็ไม่เหมาะสม ตัวอย่างเช่น หน้าแรก กับหน้า Category หรือ Archives ถ้าเรา Set ใน Reading Option เป็น 1 หน้าแรกเราจะแสดงเพียง 1 Entry และหน้า Archives ก็แสดงแค่ 1 Entry เหมือนกัน ซึ่งเราอยากให้มันแสดงมากกว่านั้น

ตัวอย่าง :
http://www.7blogger.com/ หน้าแรกแสดง 1 Entry
http://www.7blogger.com/category/wordpress/ 
หน้า Category แสดง 10 Entry

เราจะใช้ query_posts() ช่วยบังคับให้แต่ละหน้าแสดงไม่เหมือนกันได้ครับ ซึ่งนอกจากนี้แล้ว function นี้ยังสามารถบังคับรูปแบบการแสดง Entry ได้อีกหลากหลายมากครับ

รูปแบบของ Function :

query_posts($query_string . “&order=ASC”)

$query_string จะเป็นรูปแบบการแสดงผล
order จะเป็นการเรียงลำดับ ค่าตั้งต้นคือ DESC คือเรียงจากมากไปน้อย ส่วน ASC คือน้อยไปมาก 

วิธีใช้ : 

นำ Code ข้างล่าง ไปวางก่อน Loop ของ WP
query_posts(’showposts=10′);
(ในตัวอย่างจะเป็นการบังคับให้ WP แสดง Post 10 posts ในหน้านั้น)
*Loop คือส่วนแสดงผลใน WP หน้าตาจะเป็นประมาณนี้
while (have_posts()) : the_post();

Parameter :

Category Parameters
บังคับให้แสดงผลตาม Category

  • cat - แสดงตาม Category ID
    ตัวอย่าง :
    query_posts(’cat=4′);
    แสดงเฉพาะ cat ID 4     

    query_posts(’cat=2,6,17,38′);
    แสดง cat ID 2,6,17,38

    query_posts(’cat=-3′);
    แสดงทั้งหมด ยกเว้น ID -3

  • category_name - แสดงตาม Category Name
    ตัวอย่าง :
    query_posts(’category_name=Staff Home’);
    แสดงผลเฉพาะ Staff Home Category

Author Parameters
บังคับการแสดงผลตามผู้เขียน

  • author_name
  • author

วิธีใช้เหมือนกับ Category โดยชื่อที่ใช้อ้างจะเอามาจาก nickname นะครับ

Time Parameters
แสดงผลตามวันเวลาที่กำหนด

  • hour=
    แสดงตามชั่วโมงที่ post
  • minute=
    แสดงตามนาทีที่ post
  • second=
    แสดงตามวินาทีที่ post
  • day=
    ใช้วันที่ของเดือนนั้น ถ้าไม่กำหนดจะเป็นเดือนปัจจุบัน
  • monthnum=
    แสดงตามเดือนที่ post
  • year=
    แสดงตามปีที่ post

โดยส่วนใหญ่ parameter นี้จะใช้ร่วมกันหลายๆตัวนะครับ

Post & Page Parameters
บังคับการแสดงผล Post และ Page

  • p=1
    ใช้ post ID เพื่อแสดงผล
  • name=first-post
    แสดงตาม Post Slug
  • page_id=7
    ใช้ page ID เพื่อแสดงผล
  • pagename=about
    แสดงตาม Page Slug
  • showposts=1
    แสดงจำนวน posts ต่อหน้า
  • posts_per_page=10
    แสดงจำนวน posts ต่อหน้า ถ้าใส่ -1 คือแสดงทั้งหมด

Combining Parameters
การใช้หลายๆ parameters ร่วมกัน

ตัวอย่าง :
query_posts(’cat=3&year=2004′);
ก็จะเป็นการแสดง cat ID = 3 และแสดงเฉพาะ ปี 2004 เท่านั้น

ก็หวังว่าจะมีประโยชน์บ้างนะครับ มีบาง parameter ที่ผมยังไม่เข้าใจว่ามันทำอะไร(Offset) ยังไงก็รบกวนศึกษาทดลองเองนะครับที่นี่ ได้ยังไงก็บอกด้วยแระกัน ถ้าทีหลังผมรู้จะเข้ามาแก้ครับ

ขอจบ Entry นี้แต่เพียงเท่านี้ครับ Bye.

เรื่องที่เกี่ยวข้อง

  • ข้อมูลที่ผิดพลาดเหร๊อ…แบนมันซ๊ะ!!!
  • ความสัมพันธ์ระหว่าง Permalink กับ slug
  • Leave a Comment