У меня есть сайт недвижимости, где родитель — это развитие, а дети — это застройки.
На странице разработки я использую следующий код для отображения всех дочерних страниц (страниц графиков) этой разработки.
<?php
$args = array(
'post_type' => 'property',
'posts_per_page' => -1,
'post_parent' => $post->ID,
'orderby' => 'plot_number',
'order' => 'ASC'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) :
?>
<?php while ( $parent->have_posts() ) : $parent->the_post(); ?>
//CONTENT GOES HERE
<?php endwhile; ?>
<?php endif; wp_reset_query(); ?>
Я хочу отобразить то же самое (все дочерние страницы разработки), но на самих дочерних страницах. По сути, мне нужно проверить, есть ли у страницы родитель, а затем перебрать дочерние страницы …
Есть идеи?
Вы можете использовать тот же запрос, что и выше, с одной небольшой модификацией. Только одна записка, прежде чем я продолжу, если вы используете WP_Query
, вы должны использовать wp_reset_postdata()
не wp_reset_query()
, Последний используется с query_posts
что в любом случае вы должны никогда использование
Чтобы получить должность родителя, вы можете использовать $post->post_parent
, Это вернет идентификатор родителя текущей страницы. Если идентификатор возвращается 0
, это означает, что это страница верхнего уровня. Так что вы также хотели бы проверить, если $post->post_parent
не является 0
перед выполнением запроса, или вы вернетесь назад ко всем сообщениям независимо от того, является ли текущая страница страницей верхнего уровня
пример
<?php
global $post;
if( 0 != $post->post_parent ) {
$args = array(
'post_type' => 'property',
'posts_per_page' => -1,
'post_parent' => $post->post_parent,
'orderby' => 'plot_number',
'order' => 'ASC'
);
$parent = new WP_Query( $args );
if ( $parent->have_posts() ) :
?>
<?php while ( $parent->have_posts() ) : $parent->the_post(); ?>
//CONTENT GOES HERE
<?php endwhile; ?>
<?php wp_reset_postdata(); endif;
}
?>
Еще одна вещь, которую я взял сейчас, вы должны использовать wp_reset_postdata()
до endif
но после endwhile
Других решений пока нет …