WP_Query для получения дочерних страниц текущей страницы
Может кто-нибудь помочь мне с wp_query.
Я создаю файл шаблона/цикл для создания архивной страницы дочерних страниц текущей страницы.
Этот запрос должен быть автоматическим, так как я использую его на нескольких страницах.
Ниже мой запрос, но он возвращает только записи вместо дочерних страниц.
<?php
$parent = new WP_Query(array(
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order',
'posts_per_page' => -1
));
if ($parent->have_posts()) : ?>
<?php while ($parent->have_posts()) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<p><?php the_advanced_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php unset($parent); endif; wp_reset_postdata(); ?>
Заранее спасибо за любую помощь.
Джош

Вам нужно заменить child_of
на post_parent
и также добавить post_type => 'page'
:
Кодекс WordPress Wp_query Параметры записей и страниц
<?php
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) : ?>
<?php while ( $parent->have_posts() ) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<p><?php the_advanced_excerpt(); ?></p>
</div>
<?php endwhile; ?>
<?php endif; wp_reset_postdata(); ?>

Спасибо, чувак, я пробовал оригинальный post_parent
, но ключевым оказался 'post_type' => 'page'
- значит ли это, что WordPress по умолчанию делает запросы к постам? Приму ответ, когда система позволит.

Я знаю, что это очень старый вопрос, но раз я на него наткнулся, другие тоже могут.
WordPress предлагает очень простое решение для вывода списка страниц, где также можно добавить некоторые аргументы.
Вот всё, что вам нужно для отображения дочерних страниц:
wp_list_pages(array(
'child_of' => $post->ID,
'title_li' => ''
))
Посмотрите справочную страницу по wp_list_pages для всех доступных опций.

Для перезаписи этого в функцию в файле functions.php вам нужно добавить global $post;
function page_summary() {
global $post;
$args = array(
'post_type' => 'page',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'order' => 'ASC',
'orderby' => 'menu_order'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) :
while ( $parent->have_posts() ) : $parent->the_post(); ?>
<div id="parent-<?php the_ID(); ?>" class="parent-page">
<h1><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
</div>
<?php
endwhile;
endif;
wp_reset_postdata();
}
