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