זו אולי הפונקציה החשובה ביותר לפיתוח תבניות וורדפרס.
בעקרון query_posts מאפשרת לשנות את שאילתת הפוסטים שלכם ממסד הנתונים, כלומר – אם בוורדפרס שלכם מוגדר להציג 3 פוסטים בעמוד, אבל אתם רוצים להציג בתוצאות החיפוש 10 – זו הפונקציה בשבילכם.
1
| query_posts($query_string."showposts=10"); |
שימו לב שלפונקציה צריך לקרוא לפני הלולאה.
זו כמובן רק דגמה אחת, לפונקציה יש מספר עצום של פרמטרים המאפשרים לעשות איתה לא מעט משחקים מתוחכמים.
הנה חלק מהפרמטרים היותר שימושיים שלה:
- showposts - מספר הפוסטים לשליפה עבור הלולאה
- cat - הצג רק פוסטים מהקטגוריה מספר…
- category_name – הצג רק פוסטים מהקטגוריה ששמה… (שימושי לתבנית שמיועדת להפצה למספר בלוגים)
- meta_key,meta_value – מאפשר שליפת פוסטים בעלי ערך מסויים בשדה מיוחד
- author - פוסטים של מחבר מספר…
- author_name – פוסטים של מחבר ששמו…
לפונקציה יש עוד לא מעט פרמטרים אפשריים – ניתן לראות את כולם בתיעוד שלה בקודקס
כמה קטעי קוד שימושיים:
לתבניות מגזין נשמתש בד"כ במספר לולאות, הראשית תציג featured post ותראה כך:
1 2 3 4 5 6
| query_posts("category_name=featured&showposts=1");
if (have_posts()) :
while(have_posts()) : the_post();
//do stuff ...
endwhile;
endif; |
דוגמה נוספת היא הצגת פוסטים מסויימים אותם נרצה להציג בצורה שונה.
למשל, אם נרצה לבנות לבלוג מונחון.
בפוסט "שימוש מושכל בתגיות וורדפרס" הראיתי כיצד ניתן להשתמש בתגיות ליצירת מונחון לבלוג. בואו נניח שפתרון זה אינו טוב לכם, אפשרות שניה היא פשוט להשתמש בפוסטים.
כל פוסט יהווה מונח, כאשר הכותרת היא שם המונח ואילו הטקסט הוא ההגדרה.
עכשיו נכתובת תבנית לעמוד המונחון שלנו.
העתיקו את page.php מהתבנית שלכם ושנו את הלולאה כך:
לפני הלולאה הוסיפו את השורה:
1
| query_posts("cat=7&showposts-1"); //change 7 to your glossary cat #. |
את הקוד בתוך הלולאה שנו כך:
1 2 3 4
| <div class="single_term">
<span class='term_name'>< ? the_title(); ?></span>
<span class="term_data'>< ? the_content(); ?></span>
</div> |
אל תשכחו להוסיף תחילית של תבנית
1 2 3 4 5
| < ?
/*
* Template Name: Glossary
*/
?> |
עכשיו נותר לדאוג שהפוסטים הללו לא יופיעו בשאר הבלוג.
אפשרות ראשונה:
להשתמש ב-query_posts
1
| query_posts($query_string."cat=-7"); |
צריך להוסיף שורה זו לקובץ index.php
אפשרות שניה וקלה יותר,
להשתמש בתוסף Advance Category Excluder