有什么原因使我无法在循环中获取当前类别吗?

时间:2013-06-18 作者:TheWebs

我认为我做错了,但如果我做了:

if(have_posts()){
    $category_id = get_query_var(\'cat\');
var_dump($category_id);
    while (have_posts()){
        the_post();
    }
}
var转储返回为空。为什么?有没有更好的方法来获取循环中的当前类别对象?同样的问题也适用于标签。如果这是一个is_tag()?

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

get_query_var 将从主查询中获取类别,并且只为某些页面设置类别,例如类别存档。它不是为“单个”页面或标记存档或许多其他“页面”子项设置的。

该值get_query_var returns类似于“search”变量。它将在指示查询查找特定类别中的帖子时设置。它并不反映循环中当前帖子的值,当然如果get_query_var(\'cat\') 则应将所有职位分配给该类别。

您想要获取循环中当前帖子的类别是get_the_category, 但它应该在the_post. get_the_tags 对于标记和更通用的get_the_terms 可用于任何分类法。

结束

相关推荐

使用Get_Categories选择菜单下拉菜单的自定义小部件

我创建了一个自定义小部件,它应该显示一个包含博客所有类别的选择菜单。我使用get\\u categories来编译列表。这很好,所有类别都显示在下拉菜单中。每次我保存并刷新小部件页面时,自定义小部件就不再存在了。我检查过了function update 那里一切都很好。所以我想这一定是我创建表单的方式。有什么想法吗?提前谢谢。我不想转储所有代码,所以我只粘贴了创建表单的函数。如果你需要更多,请发表评论function form( $instance ) { /* Default