כך תוכלו לאחזר כל פוסט שתרצו באמצעות WP_Query

אם בנית נושאים פשוטים בעבר, רוב הסיכויים שהצורך לאחזר פוסטים בעצמך לא עלה. אחרי הכל, וורדפרס טוענת את 10 הפוסטים האחרונים בעמוד הראשי ואת הפוסטים הנכונים בדפי ארכיון. מה לגבי תרחישים מורכבים יותר? מה אם תרצה Sitemap מסוגים ותרצה לרשום את כל הפוסטים שלך ו דפים שהוזמנו לפי תאריך?


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

בפוסט זה אני אתן לך מבט מעמיק כיצד WP_Query עובד – בואו נתחיל!

לולאה בהתאמה אישית

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

<?php if (have_posts ()): ?>
<?php while (have_posts ()): the_post () ?>

<?php בינתיים ?>
<?php אחר: ?>

<?php אנדף ?>

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

<?php
$ args = מערך (
‘post_type’ => ‘הודעה’,
‘post_status’ => ‘עתיד’
);
$ מתוזמן = WP_Query חדש ($ args);

אם ($ מתוזמן->have_posts ()):
?>
<?php בזמן ($ מתוזמן->have_posts ()): $ מתוזמן->הפוסט() ?>

<?php בינתיים ?>
<?php אחר: ?>

<?php אנדף ?>

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

אם אתה חדש בתכנות מונחה עצמים ואינך מבין באמת מדוע, אל תדאג, עדיין תוכל להשתמש בשאילתות מותאמות אישית בקלות. אנו נתמקד במערך $ args לאורך כל הפוסט שיהיה די פשוט.

טיעונים פשוטים

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

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

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘tag_id’ => ’22, 92,44, -21 ‘
);
$ our_posts = WP_Query חדש ($ args);

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

המחבר, שם המחבר, החתול, הקטגוריה, שם (למונחי חיפוש), post_status, post_type הם דוגמאות לכמה שדות פשוטים יותר. שים לב כי שדות מסוימים, כמו post_status מחייבים אותך לעבור מערך סטטוסים אם ברצונך להשתמש בערכים מרובים.

$ args = מערך (
‘post_type’ => מערך (‘פוסט’, ‘דף’),
‘post_status’ => מערך (‘טיוטה’, ‘פרסם’),
‘חתול’ => ‘מוסיקה, קטעי וידאו’
);
$ our_posts = WP_Query חדש ($ args);

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

שאילתות טקסונומיה

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

$ args = מערך (
‘post_type’ => ‘ספר’,
‘tax_query’ => מערך (
מערך (
‘טקסונומיה’ => ‘ז’אנר’,
‘שדה’ => ‘שבלול’,
‘תנאים’ => מערך (‘scifi’, ‘מותחן’),
‘מפעיל’ => ‘לא ב’,
),
מערך (
‘טקסונומיה’ => ‘סופר’,
‘שדה’ => ‘מזהה’,
‘תנאים’ => מערך (92, 883, 399),
),
‘יחס’ => ‘AND’,
),
);
שאילתה $ = WP_Query חדש ($ args);

כאן אנו מאחזרים כמה פוסטים מסוג הפוסט ‘הספר’ שלנו, ומוסיפים כמה פרמטרים לטקסונומיה. בעזרת שני מערכים שהוגדרו בתוך tax_query ציינו שאנחנו רוצים למשוך ספרים שנכתבו על ידי 92, 883 או 399 של המחבר שהם לא בז’אנר המדעי או המותחן. פרמטר הקשר מגדיר את הקשר בין שני המערכים. במקרה שלנו מדובר במערכות יחסים ‘ו-‘ שמשמעותן שיש לעמוד בשני התנאים.

אם היינו משתמשים ב- ‘או’ היינו שולפים ספרים שהם לא בקטגוריית המדע המדעי או המותחן או שהם נכתבים על ידי שלושת המחברים שצוינו. פירושו באנגלית רגילה: אני רוצה לראות את כל הספרים שלי למעט ז’אנר המדע והסרטים. עם זאת, אני רוצה לראות את כל הספרים של טרי פראצ’ט, דגלאס אדמס וסטיבן קינג, ללא קשר לז’אנר.

שאילתות מטא

שאילתות מטא דומות מאוד לשאילתות הטקסונומיה במבנה אך הן משתמשות בנתונים מטבלת הטבלה של הפוסט כדי לסנן פוסטים. הקוד שלהלן יציג את כל הפוסטים שפורסמו עם תמונה מוצגת.

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘meta_query’ => מערך (
מערך (
‘מפתח’ => ‘_tattnail_id’,
‘ערך’ => ”,
‘השווה’ => ‘! =’,
),
),
);
שאילתה $ = WP_Query חדש ($ args);

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

הסוד כאן הוא לדעת להשתמש במאפיין השווה ובסוג. אתה יכול להשתמש במספר רב של ערכים שאמורים להיות מוכרים מ- SQL: ‘=’, ‘! =’, ‘>’,’>= ‘,'<‘,‘<= ‘,’ LIKE ‘,’ NOT LIKE ‘,’ IN ‘,’ NOT IN ‘,’ BETWEEN ‘,’ NOT BETWEEN ‘,’ EXISTS ‘(מ- WordPress 3.5 ומעלה) ו-‘ NOT EXISTS ‘(מ- WordPress 3.5 ולמעלה)

מאפיין הסוג הוא בדרך כלל חשוב כאשר ברצונך להשוות בין מספרים או תאריכים. ערכים אפשריים הם ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNIGNIGNED’. זכור להשתמש ב- NUMERIC כשאתה משווה בין מספרים, ברוב המקרים האחרים אתה אמור להיות בסדר.

בדיוק כמו בשאילתות הטקסונומיה תוכלו לערום דרישות מרובות ואז להשתמש בפרמטר היחסים כדי לציין את הקשר ביניהן.

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘meta_query’ => מערך (
‘יחס’ => ‘או’,
מערך (
‘מפתח’ => ‘מצב רוח’,
‘ערך’ => מערך (‘שמח’, ‘מדהים’),
‘השווה’ => ‘IN’,
),
מערך (
‘מפתח’ => ‘הכנסה’,
‘ערך’ => 500,
‘השווה’ => ‘>’,
‘type’ => ‘מספרים’
),
),
);
שאילתה $ = WP_Query חדש ($ args);

הדוגמא שלמעלה תציג פוסטים מיומן היפותטי בו קרה משהו טוב. הרגשתי אושר או מדהים או שהייתי מרוויח יותר מ- 500 דולר באותו יום.

פרמטרי תאריך

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

אחזור פוסטים מתקופה מסוימת הוא די קל. אתה יכול להשתמש בשנה, חודש מספר, w (שבוע בשנה), יום ועוד כמה פרמטרים כדי לציין זמן. הקוד שלהלן יאחזר את כל הפוסטים החל ממרץ 2013.

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘שנה’ => 2013,
‘חודש’ => 3
);
שאילתה $ = WP_Query חדש ($ args);

אם אתה רוצה להיכנס לטווחי זמן מורכבים יותר, עליך להשתמש ב date_query. זה מאפשר לך לציין טווחים שרירותיים די בקלות, באמצעות תבנית מערך מוכרת. הדוגמה הבאה – באדיבות הקודקס – מראה כיצד ניתן לאחזר פוסטים שנכתבו בין השעות 9 בבוקר ל 17 בערב בימי חול..

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘date_query’ => מערך (
מערך (
‘שעה’ => 9,
‘השווה’ => ‘>= ‘,
),
מערך (
‘שעה’ => 17,
‘השווה’ => ‘<= ‘,
),
מערך (
‘יום שבוע’ => מערך (2, 6),
‘השווה’ => ‘בין’,
),
),
);
שאילתה $ = WP_Query חדש ($ args);

הזמנת תוצאות

הסדר בו מוצגת רשימה חשובה לא פחות מהרכיבים שבתוכה. למרבה המזל וורדפרס מציעה לנו את פרמטרי ההזמנה והביצועים. פרמטר ההזמנה די פשוט, ניתן להשתמש ב- ASC או DESC כדי להזמין עולה או יורד.

פרמטר order_by יכול לקחת מספר ערכים: ‘אין’, ‘מזהה’, ‘מחבר’, ‘כותרת’, ‘שם’, ‘סוג’, ‘תאריך’, ‘שונה’, ‘הורה’, ‘ראנד’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. הזמנה לפי meta_value יכולה להיות שימושית במיוחד. במקרה זה, אל תשכח לציין גם את שדה meta_key.

$ args = מערך (
‘post_type’ => ‘ציור’,
‘meta_query’ => מערך (
מערך (
‘מפתח’ => ‘מחיר’,
‘ערך’ => 50000,
‘השווה’ => ‘>’,
‘type’ => ‘מספרים’
),
),
‘order_by’ => ‘meta_value_num’,
‘meta_key’ => ‘מחיר’
);
שאילתה $ = WP_Query חדש ($ args);

דוגמה זו מאחזרת ציורים ששווים עולה על 50,000 $ ומזמינה אותם לעלות לפי מחיר. שימו לב מכיוון שהמחיר מאוחסן כמספר השתמשתי ב- meta_value_num כדי להזמין את התוצאות, לעומת meta_value שישמש למחרוזות.

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

$ args = מערך (
‘post_type’ => ‘הודעה’,
‘post__in’ => מערך (23, 441, 12, 322, 34, 33),
‘order_by’ => ‘פוסט__’,
);
שאילתה $ = WP_Query חדש ($ args);

מסיימים

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

WP_Query הוא חלק ממה שהופך את וורדפרס ל- CMS כללי נהדר – היכולת לשלוף אובייקטים ממסד הנתונים בצורה מודולרית ולהתאמה אישית..

אם יש לך שאלות אל תודיע לנו בתגובות!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map