问题是您正在运行query_posts
在页面的中间,顺便说一句,这几乎是你永远不应该做的。这将覆盖主查询global
$wp_query
对象分页可能会出现才能工作。问题是原始主查询在加载模板之前运行,因此在运行修改后的查询版本之前运行,因此主查询和正在分页的查询不同步。
您可能需要在上使用筛选器pre_get_posts
, something like this one, 而不是在页面中间运行另一个查询。在你的情况下,你需要获取一些信息。
以下是您需要的最佳猜测(完全未经测试):
function pre_get_posts_wpse_104225($qry) {
if (is_main_query() && !is_front_page()) {
$et_ptemplate_blog_perpage = isset( $et_ptemplate_settings[\'et_ptemplate_blog_perpage\'] )
? (int) $et_ptemplate_settings[\'et_ptemplate_blog_perpage\']
: 10;
$blog_cats = isset( $et_ptemplate_settings[\'et_ptemplate_blogcats\'] )
? (array) $et_ptemplate_settings[\'et_ptemplate_blogcats\']
: array();
$cat_query = implode(",", $blog_cats);
$qry->set(\'posts_per_page\',$et_ptemplate_blog_perpage);
$qry->set(\'category__in\', $cat_query);
}
}
add_action(\'pre_get_posts\',\'pre_get_posts_wpse_104225\');
我相信你需要更多的条件
if (is_main_query() && !is_front_page()) {
-- 但我不知道还有什么。