PHP: Използвайте приложния програмен интерфейс (API) на WordPress, за да създадете шорткод за изброяване на подстраници
В момента работим по доста сложна реализация за корпоративен клиент. Сайтът се изгражда в WordPress, но има много камбани. Често, когато правя този тип работа, обичам да запазвам персонализирания код за пренасочване по-късно на други сайтове. В този случай мислех, че това е толкова полезна функция, исках да я споделя със света. Използваме Тема на Avada WordPress с Fusion Page Builder като родителска тема и внедряване на доста персонализиран код в нашата детска тема.
WordPress вече има няколко функции в своя API, които могат да се използват за изброяване на подстраници, като wp_list_pages и get_pages. Проблемът е, че те не връщат достатъчно информация, ако се надявате динамично да създадете списък с куп информация.
За този клиент те искаха да публикуват длъжностни описания и списъкът с ваканции автоматично да се генерира в низходящ ред до датата на публикуване. Те също искаха да покажат откъс от страницата.
И така, първо, трябваше да добавим извадка за поддръжка към шаблона на страницата. Във functions.php за тяхната тема добавихме:
add_post_type_support ('страница', 'откъс');
След това трябваше да регистрираме персонализиран шорткод, който да генерира списъка с подстраници, връзки към тях и откъса за тях. Направете това, трябва да използваме WordPress Loop. Във functions.php добавихме:
// Списък на подстраници във функция на списъка dknm_list_child_pages ($ atts, $ content = "") {global $ post; $ atts = shortcode_atts (масив ('ifempty' => 'Няма записи', 'aclass' => ''), $ atts, 'list_subpages'); $ args = array ('post_type' => 'page', 'posts_per_page' => -1, 'post_parent' => $ post-> ID, 'orderby' => 'objavi_date', 'order' => 'DESC' ,); $ родител = нов WP_Query ($ аргументи); if ($ parent-> have_posts ()) {$ string. = $ content. ' '; докато ($ parent-> have_posts ()): $ parent-> the_post (); $ string. = ' '.get_the_title ().' '; if (has_excerpt ($ post-> ID)) {$ string. = '-' .get_the_excerpt (); } $ string. = ' '; в крайна сметка; } друго {$ string = ' '. $ atts [' ifempty '].' '; } wp_reset_postdata (); върне $ низ; } add_shortcode ('list_subpages', 'dknm_list_child_pages');
Сега шорткодът може да бъде приложен в целия сайт, за да покаже дъщерните страници с връзка и извадка. Употреба:
[list_subpages aclass = "button" ifempty = "За съжаление в момента нямаме никакви работни места."] Списък на работните места [/ list_subpages]
Резултатът е хубав, изчистен неподреден списък на публикуваните работни места, които са дъщерни страници под страницата им за кариера.
Ако няма публикувани работни места (няма дъщерни страници), той ще публикува:
За съжаление в момента нямаме свободни работни места.
Ако има публикувани работни места (дъщерни страници), той ще публикува:
Списък на работните места:
- Най-новата детска страница - Извадка от страницата Child
- Следваща дъщерна страница - Извадка от страницата Child
- Следваща дъщерна страница - Извадка от страницата Child