PHP: השתמש בממשק ה- API של WordPress כדי לבנות קוד קצר לרשימת דפי משנה
אנו עובדים על יישום מורכב למדי עבור לקוח ארגוני כרגע. האתר נבנה בוורדפרס אך יש בו המון פעמונים ושריקות. לעיתים קרובות, כשאני עושה סוג זה של עבודה, אני רוצה לשמור את הקוד המותאם אישית לשימוש חוזר אחר כך באתרים אחרים. במקרה זה, חשבתי שזו פונקציה כל כך שימושית, רציתי לחלוק אותה עם העולם. אנו משתמשים ב- נושא וורדפרס Avada עם בונה הדפים Fusion כנושא הורים, ופריסת לא מעט קוד מותאם אישית בנושא הילד שלנו.
לוורדפרס יש כבר כמה פונקציות ב- API שלה שיכולות לשמש לרשימת דפי משנה, כמו wp_list_pages ו- get_pages. הבעיה היא שהם לא מחזירים מספיק מידע אם אתם מקווים ליצור באופן דינמי רשימה עם מידע רב.
עבור לקוח זה, הם רצו לפרסם תיאורי תפקידים ורשימת הפתיחות למשרות תיווצר באופן אוטומטי בסדר יורד לפי תאריך הפרסום שלהם. הם גם רצו להציג קטע של הדף.
אז ראשית, היינו צריכים להוסיף תמיכה לקטע לתבנית הדף. ב- functions.php עבור הנושא שלהם, הוספנו:
add_post_type_support ('עמוד', 'קטע');
לאחר מכן, עלינו לרשום קוד קצר מותאם אישית שייצור את רשימת עמודי המשנה, קישורים אליהם ואת הקטע עבורם. האם לעשות זאת, עלינו להשתמש ב- וורדפרס Loop. ב- functions.php, הוספנו:
// רשום דפי משנה בפונקציה רשימה dknm_list_child_pages ($ atts, $ content = "") {פוסט $ גלובלי; $ atts = shortcode_atts (מערך ('ifempty' => 'אין רשומות', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'עמוד', 'posts_per_page' => -1, 'post_parent' => $ post-> מזהה, 'orderby' => 'publish_date', 'order' => 'DESC' ,); $ parent = WP_Query חדש ($ args); אם ($ parent-> have_posts ()) {$ string. = $ content. ' '; בעוד ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; אם (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } מחרוזת $. = ' '; בסופו של דבר; } אחר {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); להחזיר מחרוזת $; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
כעת, ניתן ליישם את הקוד הקצר בכל האתר כדי להציג את דפי הילד עם קישור וקטע. נוֹהָג:
[list_subpages aclass = "button" ifempty = "מצטערים, כרגע אין לנו שום משרה."] רשימת משרות [/ list_subpages]
התוצאה היא רשימה מסודרת ונקייה של מקומות עבודה שפורסמו, שהם דפי ילדים מתחת לדף הקריירה שלהם.
אם לא פורסמו עבודות (לא היו דפי ילדים), הוא יפרסם:
מצטערים, כרגע אין לנו שום משרות.
אם פורסמו עבודות (דפי ילדים), הוא יפרסם:
רשימת משרות:
- דף הילד האחרון - קטע מדף הילד
- דף הילד הבא - קטע מדף הילד
- דף הילד הבא - קטע מדף הילד