提供覆盖默认查询的功能

时间:2012-09-11 作者:vmassuchetto

在插件中,我想为用户提供一个函数,在模板中设置默认查询,以便他们可以使用一些自定义循环。最好的方法是什么?

我想象这样的情况:

my_plugin_set_query();
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        ... iteration through a predefined post set ...
    }
}

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

我这样做了,而且很有效,但我不确定这是否是最好的方式:

function get_override_query() {
    $posts = get_posts_from_some_custom_method();
    $query = new WP_Query();
    $query->current_post = -1;
    $query->post_count = count( $posts );
    $query->posts = $posts;        
    return $query;
}

function override_query() {
    global $wp_query;
    $query = get_override_query();
    $wp_query = $query;
}
然后,我还可以在不更改默认查询的情况下遍历帖子,如:

$query = get_override_query();
while ( $query->has_posts() ) {
    $query->the_post();
    ...
}

SO网友:Zach

如果要插入查询,pre_get_posts() 将成为你的朋友。Pippin Williamson 在这个问题上也有很好的著作。

结束

相关推荐

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

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