无法覆盖WP_QUERY()中的POST_TYPE

时间:2012-03-12 作者:ptim

我正在创建一个特色帖子滑块,它从“特色”类别中获取4页或帖子。我正在尝试使用WP\\U查询,但没有乐趣:(

我的滑块查询是:

$ml_featured = new WP_Query( 

    array(
        \'posts_per_page\' => 4,
        \'post_type\' => array(\'page\', \'post\'),
        \'category__in\' => 22
    )
);


if( $ml_featured->have_posts() ) {
    while( have_posts() ) : $ml_featured->the_post();

        // looping

    endwhile;
}
else {
    // no posts
}
fire\\u PHP显示WP\\u查询包含:

WP_Query(
    query =
    array(
        [\'posts_per_page\'] => 4
        [\'post_type\'] =>
            array(
                [0] => \'page\'
                [1] => \'post\'
            )
        [\'category__in\'] => 22
    )

    query_vars =
    array(

        [\'posts_per_page\'] => 4
        [\'post_type\'] =>
            array(
                [0] => \'wod\'
                [1] => \'attachment\'
            )
        [\'category__in\'] =>
            array(
                [0] => 22
            ) 
我正在使用Genesis,以儿童主题为例。为了在主页上显示我的自定义帖子类型“WOD”,我添加了一些功能。php:

add_filter( \'pre_get_posts\', \'ml_wods_home\' );
function ml_wods_home( $query ) {

    if ( is_home() && false == $query->query_vars[\'suppress_filters\'] )
        $query->set( \'post_type\', array( \'wod\', \'attachment\' ) );

    return $query;
}
建议在Justin Tadlock. 这本身运行良好,但似乎会干扰滑块查询:

请注意,查询[\'post\\u type\']被查询变量[\'post\\u type\']覆盖。此外,当我胡闹时,浏览器经常超时。。。

我发现了Michael Fields had a related issue , 发布了一个解决方案(我想我正在实施),但它对我不起作用,我不理解。。

我错过了什么?!TIA,Tim

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

首先while( have_posts()): 应该是while( $ml_featured->have_posts()):

其次,在你的pre_get_posts 您检查的回调:

false == $query->query_vars[\'suppress_filters\']
但对于每个WP_Query 查询和任何get_posts “superss\\u filters”显式设置为false的查询。如果要检查查询是否为“主”查询(即与全局$wp_query), 您可以使用:

$query->is_main_query();
(see documentation here). 如果$query 是主查询,否则为false。This function was introduced in 3.3. 在3.3之前,您可以检查(未测试):

global $wp_the_query;
if($query === $wp_the_query){
  //is main query
}else{
  // is not main query
}
或者(但最好使用上述方法),改变main 仅查询:

 global $wp_query;
 $wp_query->set( \'post_type\', array( \'wod\', \'attachment\' ) );

结束

相关推荐

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

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