为什么我尝试选择具有特定标签的帖子时会出现这种WP_Query奇怪的行为?

时间:2014-09-16 08:18:50

标签: php wordpress-theming wordpress

精选标记帖

,我遇到以下问题

我有一个网站页面,我只想显示已设置特定标记的帖子(使用循环)。

所以在这个页面中我放了这个循环代码:

<header class="header-sezione">
    <?php
        echo"<h1>IN EVIDENZA:</h1>";

            $featured = new WP_Query('tag=featured');

            if ($featured->have_posts()) : 
                while ($featured->have_posts()) : $featured->the_post();
                /*
                 * Include the post format-specific template for the content. If you want to
                 * use this in a child theme, then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part('content', get_post_format());

            endwhile;
            //wp_reset_postdata();
            else :
                // If no content, include the "No posts found" template.
                get_template_part('content', 'none');

            endif;
    ?>
</header>

理论上,这个循环应该只显示具有特色标签集的帖子,但它部分起作用,因为它会严格显示所有具有精选标签集的帖子但是在那里当这篇文章没有设置精选标记时,它会显示一个帖子。

我无法理解为什么会发生这种情况,因为我指定必须通过此查询仅选择精选标记:

$featured = new WP_Query('tag=featured');

我错过了什么?我该如何解决这个问题?

TNX

3 个答案:

答案 0 :(得分:0)

插入

  

wp_reset_query();

  

wp_reset_postdata();

在循环结束时。这将重置查询。

答案 1 :(得分:0)

对于额外的过滤器,您可以像这个参数一样使用 $ cat_posts = new WP_Query(&#34; showposts = 2&amp; tag = featured&amp; orderby = date&amp; order = DESC&#34;);

<?php 
    $cat_posts = new WP_Query("tag=featured"); 
  while ( $cat_posts->have_posts() ){
                    $cat_posts->the_post(); ?>   
                    <div class="btext1">
                     <h3><?php echo get_the_title(); ?></h3>
                     <h4><?php echo the_time('F j, Y'); ?> </h4>
                     <p><?php echo get_the_content(); ?><a href="<?php the_permalink(); ?>">more »</a></p>
                   </div>

   <?php   }  ?>

答案 2 :(得分:0)

我自己解决了这个问题。

问题不在于查询,而是由于此行的存在引起的:

get_template_part('content', 'none');

如果我删除它,它可以正常工作