Anonim

פירוט מהיר

  • query_posts - אל תשתמש אלא במקרי קצה נדירים
  • pre_get_posts - השתמש אם ברצונך לשנות את שאילתת ברירת המחדל בעמוד
  • WP_Query חדש - השתמש בכדי לקבל תוצאות שונות מהשאילתה הראשית
  • get_posts - זהה ל- WP_Query, פשוט מחזיר תוצאות בתבנית מערך במקום זאת
  • עמודים

    השימוש ב- query_posts אינו מומלץ יותר. יש דרכים טובות יותר להשיג את מה שאתה מנסה להשיג. מנסה לשנות את השאילתה הראשית? השתמש בפעולה pre_get_posts כדי לסנן את התוצאות (ראה להלן). query_posts זורק את השאילתה הראשית המקורית לצד (לאחר שהיא כבר הופעלה), ויוצר שאילתה ראשית חדשה. זה מחליף את כל המשתנים הגלובליים הקשורים לפרסום, ומביא לשיחת בסיס נתונים חדשה לחלוטין. פשוט אין סיבה שלא פשוט לשנות את השאילתה הקיימת. אני בטוח שיש כמה מקרי קצה שבהם יש להשתמש בהם, אבל אני לא יכול לחשוב על אף אחד שבראש הראש שלי. השתמש באחת מהאפשרויות הבאות, מכיוון שסביר להניח שיהיה מתאים יותר.

    pre_get_posts

    זהו פילטר. זה משנה את השאילתה הראשית לדף. כך, למשל, אנו רוצים לשנות את מספר התוצאות שיוחזרו בדף הבית …

פונקציה tj_change_home_number ($ שאילתה) {if (is_home ()) {$ query-> set ('posts_per_page', 2); להחזיר; }} add_action ('pre_get_posts', 'tj_change_home_number');

זה ישנה את השאילתה הראשית כך שתחזיר רק 2 פוסטים בדף הבית.

WP_Query

השאילתה העיקרית בכל תבנית שנקראת היא מופע של WP_Query . כשאתה מתקשר עם משתני הפוסט הגלובלי בתבנית, זו התוצאה של WP_Query . מקרי השימוש בהם הם רבים, אך כמו לגבי get_posts, הייתי מכריז על WP_Query חדש לצורך משיכת פוסטים קשורים, משהו בקווים אלה. רק זכור שאם אתה מפעיל את הפונקציה the_post () תוך כדי מעבר דרך WP_Query חדש, הפעל את הפונקציה wp_reset_postdata () לאחר שתסיים לולאה כדי לאפס את נתוני הפוסט הגלובלי לשאילתה הראשית המקורית.

לקבל_מוצבים

על ידי שימוש ב- get_posts, אתה מתקשר למעשה ל- WP_Query חדש ומחזיר את המידע הזה בתבנית מערך. בדרך כלל אשתמש ב- get_posts כשאני מחזיר פוסטים לסליידר בדף הבית, או אם אני קורא כמה פוסטים קשורים בסרגל הצד. ניתן להשתמש באותה קלות ב- WP_Query, אך זו דרך טובה לקבל מערך פוסטים מבלי לשנות את משתני הפוסט הגלובלי. בעיניי זה הפשטני והקל ביותר לשימוש. אין צורך בשיחות פונקציה לאחר החזרת הנתונים שלך, פשוט עובר דרך מערך.

זה יכול להיות מעט מבלבל, אז אל תהסס לשאול שאלות בתגובות למטה.

התייחסות:
WP_Query
pre_get_posts
עמודים
לקבל_מוצבים

Wp_query לעומת query_posts לעומת get_posts לעומת pre_get_posts