即使没有帖子,WP循环中的警报栏部分也会显示

时间:2016-08-29 作者:Adam Lane

我对一个顽固的模板部分有一个问题,它想在我的网站上显示,即使据我所知,它不应该显示在我的网站上。

本节应在页面顶部显示一个警报栏,无论何时有帖子或事件(CPT)及其关联的警报或通知类别。我对这些类别做了一个query\\u posts,查看它们是否与任何内容相关联,然后编写了一个if语句,仅在存在某些内容时显示该部分。

我已经检查了CMS,没有任何一个类别。下面是我的代码。如果有人能指出我的错误或解释为什么这不起作用,我将非常感激。谢谢

<?php
query_posts( array(
    \'cat\'       =>  array( 23, 31 ) )
);

if( have_posts ) :
?>

<section id="alert-bar" class="clearfix">
    <div class="container">
        <div class="row">
            <div class="col-xs-12">

            <?php

                while ( have_posts() ) : the_post();

                //ADVANCED CUSTOM FIELDS VARIABLES
                $event_thumb        =   get_field( \'event_thumb\' );
                $alert_excerpt      =   get_field( \'alert_excerpt\' );
            ?>

            <article class="row">
                <div class="col-xs-3 col-md-offset-1 col-md-2 alert-image-wrapper">
                    <a href="<?php the_permalink(); ?>">
                        <img src="<?php echo $event_thumb[\'url\']; ?>" alt="<?php the_title(); ?>">
                    </a>
                </div> <!-- .col-xs-3 .col-md-offset-1 .col-md-2 .alert-image-wrapper -->

                <div class="col-xs-9 alert-text-wrapper">
                    <a href="<?php the_permalink(); ?>">
                        <h4><?php the_title(); ?></h4>
                        <p><small><?php echo $alert_excerpt; ?></small></p>
                    </a>
                </div> <!-- .col-xs-9 .alert-text-wrapper -->
            </article>

            <?php endwhile; wp_reset_query(); ?>

            </div> <!-- .col-xs-12 -->
        </div> <!-- .row -->
    </div> <!-- .container -->
</section> <!-- #alert-bar -->


<?php endif; ?>
我有一些样式,包括填充和应用于section标记的背景色,这就是为什么我将整个内容包装在if语句中。

1 个回复
最合适的回答,由SO网友:The J 整理而成

您正在查询主查询,因为您没有设置自定义查询,使用new WP Query.因此,是的,有一些帖子,只是不是你想的那些。

尝试以下操作:

 <?php

    $args = array(
        \'category__in\'=> array( 23, 31 )
    ); 
    $loop = new WP_Query( $args );

    // Start the loop for your custom query
    if($loop->have_posts() ) : ?>

        <section id="alert-bar" class="clearfix">
            <div class="container">
                <div class="row">
                    <div class="col-xs-12">

                        <?php while ($loop->have_posts() ) : $loop->the_post();

                        //ADVANCED CUSTOM FIELDS VARIABLES
                         $event_thumb        =   get_field( \'event_thumb\' );
                         $alert_excerpt      =   get_field( \'alert_excerpt\' );

                        <article class="row">
                            <div class="col-xs-3 col-md-offset-1 col-md-2 alert-image-wrapper">
                                <a href="<?php the_permalink(); ?>">
                                    <img src="<?php echo $event_thumb[\'url\']; ?>" alt="<?php the_title(); ?>">
                                </a>
                            </div> <!-- .col-xs-3 .col-md-offset-1 .col-md-2 .alert-image-wrapper -->

                            <div class="col-xs-9 alert-text-wrapper">
                                <a href="<?php the_permalink(); ?>">
                                    <h4><?php the_title(); ?></h4>
                                    <p><small><?php echo $alert_excerpt; ?></small></p>
                                </a>
                            </div> <!-- .col-xs-9 .alert-text-wrapper -->
                        </article>

                        <?php endwhile; ?>

                    </div> <!-- .col-xs-12 -->
                </div> <!-- .row -->
            </div> <!-- .container -->
        </section> <!-- #alert-bar -->

    <?php endif; wp_reset_query();
?>