Иногда у нас на блоге появляются страницы, для которых мы выставляем родительскими другие страницы, то есть делаем их дочерними. Бывает даже так, что дочерние страницы оставляют пустыми. Но все же в них должно быть хотя бы немного текста для того, чтобы удовлетворить поисковые системы и посетителей. А давайте посмотрим на сниппет, который бы добавлял содержимое дочерних страниц на родительскую, примерно как в блоге?
Для этого мы создадим небольшую функцию, которая будет выводить на странице дочерние страницы (их заголовок, цитату и ссылки, если найдет таковые) с помощью шорткода, который можно будет вставить с помощью визуального редактора страниц WordPress.
Создаем функцию
function subpage_peek() { global $post; //запрашиваем дочерние страницы $args = array( 'post_parent' => $post->ID, 'post_type' => 'page' ); $subpages = new WP_query($args); // создаем выходные данные if ($subpages->have_posts()) : $output = '<ul>'; while ($subpages->have_posts()) : $subpages->the_post(); $output .= '<li><strong><a href="'.get_permalink().'">'.get_the_title().'</a></strong> <p>'.get_the_excerpt().'<br /> <a href="'.get_permalink().'">Читать подробнее ?</a></p></li>'; endwhile; $output .= '</ul>'; else : $output = '<p>Дочерних страниц не найдено.</p>'; endif; // сбрасываем запрос wp_reset_postdata(); // возвращаем что-то return $output; }
Этот код выполняет простой запрос к текущей странице.
- Запрашивает дочерние страницы
- Если запрос возвращает страницы, проходимся по ним и создаем выжимку в виде списка, который включает в себя кликабельный заголовок, цитату и ссылку на «Читать подробнее ?»
- Если запрос не возвращает ничего, то выводим сообщение, что «Дочерних страниц не найдено.» Здесь, естественно, вы можете написать все, что угодно.
- Не забываем обнулить конечные данные запроса.
- Возвращаем результаты, а не выводим их, так, чтобы можно было использовать их в виде шорткода
Создаем шорткод
add_shortcode('subpage_peek', 'subpage_peek');
Создание шорткодов из функций — очень простое занятие, особенно, если это встроенная в WordPress функция. Также вы можете просто вставить функцию в то место в шаблоне, где нужно её отобразить. А если уж вовсе изгаляться, то можно и собственный виджет сделать.
Заключение
Вот и всё, уважаемые читатели. Вот очень удобный путь организации дочерних страницы и организации предпросмотра их читателям. Ваш итоговый результат будет выглядеть примерно таким образом: