如果显示子页面,则隐藏<侧边栏>

时间:2013-09-13 作者:Peter

我有这个代码来显示每个页面中的子页面。

<?php $parent = $post->ID; ?> 

<?php query_posts(\'posts_per_page=15&post_type=page&post_parent=\'.$parent);
 while (have_posts()) : the_post();
?>

<?php $image_thumb = get_post_meta($post->ID, \'image-thumb\', true); ?>
<div class="subpages">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>


<?php
$src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), array( 5600,1000 ), false, \'\' );
?>
<div class="subpages-img" style="background: url(<?php echo $src[0]; ?> ) no-repeat center !important; height: 400px; width: 150px;">
<?php the_post_thumbnail(); ?>
</div>
</div>
<?php endwhile; ?>
我是否可以这样做:如果使用此代码/页面中有子页面,则不显示侧栏;如果没有子页面,则显示侧栏?

2 个回复
SO网友:Bram Vanroy

您似乎不是在使用if语句来显示子页吗?如果不是,我想您可以用jQuery来完成。

var sub = $("div.subpages");

if (sub.length > 0) {
    $("#secondary").hide(); // replace "secondary" with the ID of the sidebar
}

SO网友:Charles Clarkson

将子页面作为数组抓取

// Get an array of child pages.
$child_pages = get_posts( array(
    \'posts_per_page\' => 15,
    \'post_type\'      => page,
    \'post_parent\'    => $post->ID,
) );
然后检查$child_pages 看看里面有没有什么。

if ( $child_pages )
    show_child_pages( $child_pages );

else
    get_sidebar();
然后编写一个用户函数来显示子页面。

/**
 * Show page subpages.
 *
 * @param array $child_pages An array of post objects.
 */
function show_child_pages( array $child_pages ) {

    $sub_page_format = \'
        <div class="subpages">
            <h2><a href="%s">%s</a></h2>
            <div class="subpages-img" style="background: url(%s) no-repeat center !important; height: 400px; width: 150px;">
            %s
            </div>
        </div>
    \';

    foreach ( $child_pages as $post ) {

        $src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( 5600, 1000 ), false, \'\' );

        printf(
            $sub_page_format,
            get_permalink( $post->ID ),
            get_the_title( $post->ID ),
            $src[0],
            get_the_post_thumbnail( $post->ID )
        );
    }
}
如果您喜欢使用Template Tags 就像你在做的那样,用这个:

/**
 * Show page subpages.
 *
 * @param array $child_pages An array of post objects.
 */
function show_child_pages( array $child_pages ) {
    global $post;

    foreach ( $child_pages as $post ) {
        setup_postdata( $post );

        $src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( 5600,1000 ), false, \'\' );
        $image_thumb = get_post_meta( $post->ID, \'image-thumb\', true );
    ?>

        <div class="subpages">
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <div class="subpages-img" style="background: url(<?php echo $src[0]; ?> ) no-repeat center !important; height: 400px; width: 150px;">
                <?php the_post_thumbnail(); ?>
            </div>
        </div>

    <?php
    }

    wp_reset_postdata();
}

结束