显示带有特色图像的父子页面并隐藏当前页面(&U)

时间:2013-09-16 作者:Wito

好的,我正在尝试显示父页面和子页面的链接及其特征图像

我有这个代码,但问题是当在子页面上它没有显示时,我如何才能使它工作?

<?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; ?>

1 个回复
SO网友:gmazzap

设置父变量时,只需要一点逻辑。

之后最好使用标准的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();
}

结束