query_posts对get_the_category有影响吗?

时间:2014-02-26 22:10:19

标签: wordpress

我在调试情况时遇到问题,我认为有关这些系统如何工作的更好的背景信息会非常有用。我知道强烈建议不要使用函数query_posts()。但是,让我们假设我无法从代码中删除它。具体来说,查询被更改为拉取post_type的帖子(特定于我正在使用的主题的post_type)。这是查询在更改后的样子:

  

posts_per_page = 10安培;寻呼= 0&安培; post_type =项目

然后循环开始,它可以成功获取每个帖子的标题。但是当我调用get_the_category()时,它会返回一个空数组,即使所有帖子都有类别。我确认它是一个带var_dump的空数组。

我对这些系统的工作方式没有超强的理解,所以强调不使用query_posts让我很担心。 query_posts和get_the_category()之间是否存在任何可能导致其无法正常工作的交互?

1 个答案:

答案 0 :(得分:0)

为什么不使用WP_Query()?我不确定它是由query_posts造成的,但是query_posts()会改变Wordpress主循环(全局$wp_query)。

您可以使用此类WP_Query方法替换为query_posts循环

$newLoop = new WP_Query('posts_per_page=10&paged=0&post_type=project');

if ( $newLoop->has_posts() ) {
    while ( $newLoop->has_posts() ) { $newLoop->the_post();
        the_title(); // Your title
        var_dump ( get_the_category() ); // this should not be empty if category assigned to current post
    }
}

如果您仍想使用query_posts,请尝试以下方法之一:

尝试手动传递帖子ID:

get_the_category( get_the_ID() ); // Must be in loop

或尝试添加此内容:

// after endwhile of query_posts
wp_reset_query();