GrandParent, Parent, Child issue

У меня есть следующее

GrandParent -Parent01 --Child -Parent02 --Child --Child -Parent03 --Child 

Я хочу найти решение, которое, когда Im на странице Grandparent, что оно вернет родителям, а не детям IE.

 GrandParent -Parent01 -Parent02 -Parent03 или GrandParent -Parent01 -Parent02 -Parent03 

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

 <?php $postid = get_the_ID(); ?> <?php /* $pages = get_pages(array('child_of' =>$postid)); */ $pages = get_children(array( 'numberposts' =>30, 'post_parent' => $heading_page->post_id )); $tCount= 0; ?> <table align="center" width="100%"><tr> <?php foreach ($pages as $page): ?> <?php if($tCount % 2 == 0) { echo '</tr><tr>'; }?> <td> <div id="polaroid"> <figure> <a href="<?php echo get_permalink($page->ID); ?>"> <?php echo get_the_post_thumbnail($page->ID, array(300,250)); ?></a> <figcaption> <a href="<?php echo get_permalink($page->ID); ?>"><?php echo $page- >post_title ?> </a></figcaption> </figure> </div> </td> <?php $tCount++; endforeach; ?> </tr></table> 

Вы используете get_children и это делает именно то, что вы ему сказали. Вы сказали, чтобы получить всех потомков этого поста, и вот что у вас есть. Вы должны быть более конкретными в отношении того, что вы запрашиваете, что вам нужны только непосредственные потомки.

Первоначально у вас была правильная идея:

 $pages = get_pages(array('child_of' => $postid )); 

Но в соответствии с документацией WP_Query нет параметра WP_Query . Поэтому вместо того, чтобы просить детей постов, попросите посты с родителем $postid , давая нам:

 $pages = get_posts(array( 'post_parent' => $postid, 'post_type' => 'page' )); 

Другие примечания:

  • Используйте сетчатую систему или оставшиеся плавающие divs вместо таблицы, она более гибкая, и вы можете удалить свою логику подсчета, сделав ваш цикл намного проще
  • Отступы ваш код , с отступом код легче читать, делает весь класс ошибок очевидным, и облегчает людям понимание вашего кода и ответы на ваши вопросы
  • Используйте foreach () {} а не foreach(): endforeach; , он работает лучше с редакторами и автоматическими инструментами и шашками.
  • Положите только 1 команду на строку
  • Все ваши div имеют идентификатор поляроида, но идентификаторы должны быть уникальными, вместо этого используйте класс

Этот ответ на переполнение стека исправил его для меня … добавив в эти строки ..

 <?php foreach ( $pages as $page ): ?> <?php if ( $postid != $page->post_parent ) continue; ?>