查询变量未在主查询中设置

时间:2014-02-10 作者:GusRuss89

我有一个函数,可以检查特定于页面的设置和全局设置,以确定与边栏相关的类。我从存档中调用该函数。php模板并尝试检查post_type 是“post”,但post_type 未设置var。

相关代码:

function get_sidebar_class() {
    global $wp_query;
    echo \'Post type: \' . get_query_var( \'post_type\' );
    echo \'<pre>\' . print_r( $wp_query->query_vars, true ) . \'</pre>\';
}
post_type 两次尝试都返回空。为什么没有设置?其他变量(例如。category) 已设置,但未设置post_type.

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

查询变量是。。。这样很有趣。取决于要处理的归档文件get_post_type() 这可能足够简单(它从实际的帖子中获取类型,而不是查询)。

否则你可能想get_queried_object() 弄清楚你到底在处理什么。

SO网友:Eric Holmes

当你回应这一点时,你会看到什么类型的页面/帖子?post_type 查看时不会填充postpost archive. 试一试,看看你是否看到post_type 在那一点上。

我相信post_type 被填充在除帖子之外的任何内容上,可能还有页面-页面没有存档,所以可能只有page 存储ID或slug等的属性。因此,本质上它只用于custom post types.

SO网友:Manny Fleurmond

Am获取查询变量的另一种方法是$wp_query->get( \'post_type\' ) ;. 如果post_type 设置后,您可以通过这种方式检索它。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post