PHP: используйте WordPress API для создания шорткода для вывода подстраниц

WordPress PHP

Сейчас мы работаем над довольно сложной реализацией для корпоративного клиента. Сайт создается на 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]

Результатом является красивый, чистый неупорядоченный список опубликованных вакансий, которые являются дочерними страницами под их страницей карьеры.

Если не было опубликовано вакансий (нет дочерних страниц), он опубликует:

Извините, в настоящее время у нас нет вакансий.

Если были опубликованы вакансии (дочерние страницы), он опубликует:

Список вакансий:

Как вы думаете?

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются ваши данные комментариев.