שימוש בפונקציה query_posts

זו אולי הפונקציה החשובה ביותר לפיתוח תבניות וורדפרס.
בעקרון 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

025 שימוש בפונקציה query posts נהניתם ? הרשמו לעדכוני RSS !

6 תגובות על הפוסט “שימוש בפונקציה query_posts

  1. הי חנית,
    יופי של פוסט. אני בדיוק מתעסק בשאלה של גלוסרי בימים האחרונים ותהיתי איך אפשר יהיה לממש גלוסרי בצורה של מילון א"ב וגם A-Z.
    האם כדאי להגדיר קטגוריה עבור כל אות?? (כלומר 22 לעברית + 26 לאנגלית) זה די המון קטגוריות ומסרבל, לא?
    בנוסף גם אני רוצה שיהיה עמוד שיציג לי בראשו לינקים לכל אות.
    אז כמובן שאפשר לעשות עם
    wp_list_cat() עבור כל שפה ולכתוב לכל אחת שיציג רק את קטגרויות האותיות של אותה השפה, אבל איכשהו נדמה לי שזה קצת מסרבל ובטח יש דרך פשוטה יותר.
    תוספים לגלוסרי שגם עובדים כמו שצריך לא מצאתי אפילו עבור שפה אחת, בטח ובטח לא כזה שיתמוך בסרגל לינקים לאותיות ב 2 שפות..
    יש לך איזה רעיון בשבילי?

  2. אהלן חנית,אני פשוט מתנגד ענק נגד category_name
    אני חושב שעדיף לעשות slag הרבה יותר והרבה יותר פשוט,לפעמים תבניות לא תומכות בעברית אז פשוט עדיף לשנות לSLAG הערה בשבילך)

כתיבת תגובה

האימייל שלך לא יוצג באתר. (*) שדות חובה מסומנים

*


:mrgreen::|:twisted::arrow:8O:):?8):evil::D:idea::oops::P:roll:;):cry::o:lol::x:(:!::?:

תגי HTML מותרים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>