Показать родительские и дочерние страницы с выделенным изображением и скрыть текущую страницу

Ok Я пытаюсь показать родительские и дочерние ссылки страниц с их признаками

У меня есть этот код, но проблема wis, когда на дочерней странице он не отображается, как я могу заставить его работать?

<?php $child_pages = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_parent = ".$post->ID." AND post_type = 'page' ORDER BY menu_order", 'OBJECT'); if ( $child_pages ) : foreach ( $child_pages as $pageChild ) : setup_postdata( $pageChild ); ?> <div class="child-thumb"> <?php echo get_the_post_thumbnail($pageChild->ID, 'thumbnail'); ?> <a href="<?php echo get_permalink($pageChild->ID); ?>" rel="bookmark" title="<?php echo $pageChild->post_title; ?>"><?php echo $pageChild->post_title; ?></a> </div> <?php endforeach; endif; ?> 

Solutions Collecting From Web of "Показать родительские и дочерние страницы с выделенным изображением и скрыть текущую страницу"

При установке родительской переменной вам нужно лишь немного логики.

После этого лучше использовать стандартную функцию wordpress get_pages вместо использования необработанного запроса $wpdb .

Затем, как только вы используете setup_postdata для страниц, вы можете использовать стандартные шаблонные теги instad для echo свойств свойств исходной страницы.

Наконец, после цикла на страницах, мы должны сбросить данные post с помощью wp_reset_postdata , потому что мы изменили глобальную переменную $post , вызвав setup_postdata .

См. Встроенные комментарии для дальнейших объяснений:

 // if we are on a parent page set the $parent variable to current post id // otherwise set $parent variable to current post parent $parent = $post->post_parent == 0 ? $post->ID : $post->post_parent; // if we use current post parent as $paren, exclude the current page $exclude = $parent == $post->post_parent ? $post->ID : false; // get all the children $args = array( 'parent' => $parent, 'sort_column' => 'menu_order' ); if ( $exclude ) $args['exclude'] = $exclude; $child_pages = get_pages($args); // show only if there are children if ( ! empty($child_pages) ) { global $post; foreach ( $child_pages as $post ) { setup_postdata( $post ); ?> <div class="child-thumb"> <?php the_post_thumbnail('thumbnail'); ?> <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a> </div> <?php } wp_reset_postdata(); }