通过PRE_GET_POSTS将POST_TYPE添加到查询,并使用无限滚动

时间:2012-09-05 作者:nimmolo

我这里做错了什么。

我正在尝试在所有实例中向主博客查询添加一个自定义的帖子类型,即外部视频。对于第一次加载的帖子,它在主博客页面中起作用,但在随后通过无限滚动加载的帖子中,自定义帖子类型被忽略。此后仅加载“常规”帖子。

我正在使用无限滚动的wp插件版本。以下是我的功能:

// add external-videos to the loop

function add_external_videos_to_query( $query ) {

    if ( is_main_query() && is_home() )
        set_query_var ( \'post_type\', array(\'post\',\'external-videos\') );
}
add_action( \'pre_get_posts\', \'add_external_videos_to_query\' );
此外,似乎是相关的——即使在自定义帖子类型的归档页面上,自定义帖子类型也会被无限滚动忽略。换句话说,在“外部视频”的归档页面上,“外部视频”的第一页会加载帖子,但不会再通过无限滚动加载这种类型的帖子。

无限卷轴对于我测试过的所有其他归档文件都正常工作。

顺便说一句,我读了迈克·辛克尔的回复here 我想我正在使用类似的技术,但我不确定是否需要global $wp_the_query 或者不是。

对于另一种情况,但也试图让pre\\u get\\u帖子激发每个查询,他说:

基本上,您要查找的是全局$wp\\u the\\u查询变量,该变量设置为主查询的值。它可能不完全适合100%的情况,但可能在99%的情况下都能正常工作:

add_action( \'pre_get_posts\', \'custom_post_count\' );
function custom_post_count( $query ){
  global $wp_the_query;
  if ( $wp_the_query === $query ) {
    $query->set( \'posts_per_page\', 5 );
  }
  return $query;
};

1 个回复
SO网友:helgatheviking

@尼莫洛既然我们解决了这个问题,我们就应该留给子孙后代,让他们知道这个问题与解决方案无关pre_get_posts. 我们需要检查视频帖子的帖子类选择器是否与常规帖子相同。

结束

相关推荐