设置父变量时,只需要一点逻辑。
之后最好使用标准的wordpress功能get_pages
而不是使用原始$wpdb
查询
那么,一旦你使用setup_postdata
对于页面,您可以使用的标准模板标签instadecho
原始页面对象属性。
最后,在页面上循环之后,我们必须使用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();
}