在没有the_post的情况下获取WordPress标题

时间:2019-03-22 01:57:32

标签: wordpress

我需要遍历页面模板中主要内容之前的一组帖子。很简单:

$getCoverArticles = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'post_tag',
            'field'    => 'slug',
            'terms'    => 'cover',
        ),
    )
);

$queryCoverArticles = new WP_Query( $getCoverArticles );

if($queryCoverArticles->have_posts() ) {
  while($queryCoverArticles->have_posts() ) {
    $queryCoverArticles->the_post();
    ?>
        <a><?php the_title(); ?></a>
    <?php
  }
}

问题是,该方法设置了全局post对象,因此在此循环后尝试获取the_content()会给出循环中最后一个帖子的内容...

似乎只是为了title属性,而在全局post对象周围变了一点。有没有一种方法可以轻松获得标题而不将其分配为全局对象?

3 个答案:

答案 0 :(得分:2)

来自the documentation

  

注意:如果您在查询中使用the_post(),则需要随后运行wp_reset_postdata(),以使Template Tags再次使用主查询的当前帖子。< / p>

所以:

if($queryCoverArticles->have_posts() ) {
  while($queryCoverArticles->have_posts() ) {
    $queryCoverArticles->the_post();
    ?>
        <a><?php the_title(); ?></a>
    <?php
  }
}

// Restore original post data
wp_reset_postdata();

...应该解决该问题。

答案 1 :(得分:1)

完成额外的查询后,立即添加wp_reset_postdata();,并应恢复查询,以便全局$ post引用主查询中的当前帖子。

答案 2 :(得分:0)

请尝试以下代码,希望对您有用。

<?php

if ($queryCoverArticles->have_posts() ) :
    while ( $queryCoverArticles->have_posts() ) : $queryCoverArticles->the_post();
        ?><a href="<?php the_permalink() ?>"><?php the_title() ?></a><br /><?php
    endwhile;
endif;
wp_reset_postdata();
?>