Add posts to WP Query object

时间:2014-11-16 作者:user1049961

我需要通过向WP\\u查询对象添加一些帖子来过滤它。我有帖子id(来自另一个SQL查询)。将新帖子添加(合并)到WP\\u查询对象中的方法是什么?

2 个回复
SO网友:Nabil Kadimi

您可以使用pre_get_posts 钩子,您必须将查询的参数添加到您回调函数中WordPress提供的查询中(exclude_category 在以下示例中):

示例来自WordPress Codex:

function exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( \'cat\', \'-1,-1347\' );
    }
}
add_action( \'pre_get_posts\', \'exclude_category\' );

SO网友:Joel M

您可能应该使用post__in WP\\u Query的参数,并传入一个post id数组。假设您首先使用额外的帖子运行查询,这将起作用。像这样将它们注入到WP\\u查询对象中,允许SQL仍然对结果排序,并传入额外的帖子。

如果您没有自己编写最终查询(将自己的参数数组传递到WP\\u query),那么您必须使用pre\\u get\\u posts挂钩,如另一个答案中所述。尽管如此,请确保您执行了所有必要的检查,以确保不会像这样影响错误的查询。您应该仍然能够设置post\\uu-in参数,但必须以不同的方式进行设置。

如果您只想将一些帖子附加到其他帖子列表的末尾,那么可以使用一些简单的PHP操作。如果使用此方法,如果您只想获取一个WP\\u Post对象数组,而不必在($Query->have\\u posts()){the\\u Post();}时执行所有这些操作,那么get\\u posts()函数可能是使用WP\\u Query()的一个很好的替代方法垃圾

结束

相关推荐

注意:未定义索引:SUPPRESS_FILTERS

我正在做一个主题的除虫工作,我希望有人能帮助我。我使用JustinTadlock创建的这个函数在博客页面上显示自定义帖子类型,并且将wp debug设置为true,我会收到一个通知:未定义索引:suppress\\u filters消息。代码如下:// Custom Post Type for the public blog posts to show on Index or blog page add_filter( \'pre_get_posts\', \'my_get_posts\' );&