我的主题当前函数使用pre_get_posts
, 目前正处于我的主题功能的底部。php文件:
function mytheme_portfolio_archive_pages( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_post_type_archive( \'mytheme_portfolio\' ) ) {
// Display 20 posts for a custom post type called \'mytheme_portfolio\'
$query->set( \'posts_per_page\', 20 );
return;
}
}
add_action( \'pre_get_posts\', \'mytheme_portfolio_archive_pages\', 1 );
这意味着如果当前存档是帖子类型,我每页有20篇帖子
mytheme_portfolio
, 而不是博客页面的默认值5(数字5在“设置阅读”中的“博客页面最多显示\\uuuuu帖子”中设置)。
当Jetpack无限滚动停用时,上述功能正常工作。
问题是我想使用Jetpack无限卷轴和“mytheme\\u公文包”存档。激活后,上述功能停止工作,无限滚动使用设置中的“博客页面最多显示5篇文章”编号→加载新帖子时阅读。无限卷轴在其他方面工作正常,但如果我在mytheme_portfolio
存档页面!
我的Jetpack设置代码如下,仅供参考:
function mytheme_render_infinite_scroll() {
while ( have_posts() ) : the_post();
if (\'mytheme_portfolio\' == get_post_type() && !is_search()) :
get_template_part( \'content\', \'archive-portfolio\' );
elseif ( is_search() ) :
get_template_part(\'content\',\'search\');
else :
get_template_part( \'content\', get_post_format() );
endif;
endwhile;
}
function mytheme_jetpack_setup() {
add_theme_support( \'infinite-scroll\', array(
\'container\' => \'content\',
\'footer_widgets\' => \'footer-widgets\',
\'type\' => \'click\',
\'render\' => \'mytheme_render_infinite_scroll\',
\'wrapper\' => true,
\'posts_per_page\' => false
) );
}
add_action( \'after_setup_theme\', \'mytheme_jetpack_setup\' );
非常感谢任何人能给予的帮助!
EDIT: 我在Jetpack插件代码中找到了一行冲突的代码,在jetpack/modules/infinite-scroll/infinity.php
, 第26行。。。
function __construct() {
add_action( \'pre_get_posts\', array( $this, \'posts_per_page_query\' ) );
...
对应于同一文件中的第449-452行:
function posts_per_page_query( $query ) {
if ( ! is_admin() && self::archive_supports_infinity() && $query->is_main_query() )
$query->set( \'posts_per_page\', self::get_settings()->posts_per_page );
}
如果我把第26行注释掉,我的函数就会工作。显然,我不想更改插件的文件,有没有办法确保我的主题
posts_per_page
参数(上面的初始代码块)是使用的参数,而不是Jetpack?