使用PRE_GET_POST在侧边栏中定位查询

时间:2018-02-27 作者:Gregory Schultz

我知道pre_get_posts 可用于在主站点、自定义帖子类型和页面上进行查询。但是,有没有一种方法可以在侧边栏中定位查询?现在,我使用的是“is\\u page\\u template()”,但它只使用主查询。

my上的代码functions.php 模板:

function opby_query( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
    $query->set(\'tax_query\', array(
    array(\'taxonomy\' => \'category\',
    \'field\' => \'slug\',
    \'terms\' => array( \'podcast-control-daily\' ),
    \'operator\'=> \'NOT IN\'
    ),
    array(\'taxonomy\' => \'post_format\',
    \'field\' => \'slug\',
    \'terms\' => array( \'post-format-status\' ),
    \'operator\'=> \'NOT IN\')
    )
    );
    $query->set( \'posts_per_page\', 15 );
}
if ($query->is_page_template(\'sidebar.php\')) {
    $query->set( \'tax_query\', array(
    array(\'taxonomy\' => \'category\',
    \'field\' => \'slug\',
    \'terms\' => array( \'podcast-control-daily\' ),
    \'operator\'=> \'IN\'
    )));
    $query->set( \'posts_per_page\', 5 );
}
return $query;
}
add_action( \'pre_get_posts\', \'opby_query\' );
侧栏使用默认循环:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php the_title();?><br>

<?php endwhile; else : ?>
<?php endif; ?>

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

我认为您可以通过添加query var. 然后,您可以在pre\\u get\\u帖子中使用以下内容:

if ( get_query_var( \'your_var\' ) ) {
    // do something
}

结束

相关推荐

在WP_Query中同时使用‘TAX_QUERY’和‘META_QUERY’时速度太慢

我在帖子的末尾添加了完整的数组。我已通过的“post\\u type”、“posts\\u per\\u page”、“tax\\u query”和“meta\\u query”WP_Query.此页面大约需要10-15秒才能加载。。。太多了:-(…[对不起:10-15秒是错误的,计算起来大约是一分钟…]所以我想知道为什么它太慢了。。。。如果我删除tax_query 部分页面在2秒内加载。。。如果我删除meta_query 在2秒内再次部分页面加载。但当我两者都用的时候tax_query 和meta_qu