这不是解决问题的正确方法,也不是bug。下面是发生这种情况的原因解释:“分页是在您访问运行query\\u posts的模板文件之前计算的。有条件地更改每页posts\\u的正确方法是使用pre\\u get\\u posts挂钩来修改主查询。”https://wordpress.stackexchange.com/a/42063/17177我找到了一个适合我的实现“pre\\u get\\u posts”http://uncommoncontent.com/2012/01/28/add-custom-post-types-to-the-loop:
if ( ! function_exists( \'ucc_add_cpts_to_pre_get_posts\' ) ) {
function ucc_add_cpts_to_pre_get_posts( $query ) {
if ( $query->is_main_query() && ! is_post_type_archive() && ! is_singular() && ! is_404() ) {
$my_post_type = get_query_var( \'post_type\' );
if ( empty( $my_post_type ) ) {
$args = array(
\'exclude_from_search\' => false,
\'public\' => true,
\'_builtin\' => false
);
$output = \'names\';
$operator = \'and\';
$post_types = get_post_types( $args, $output, $operator );
// Or uncomment and edit to explicitly state which post types you want.
// $post_types = array( \'event\', \'location\' );
// Add \'link\' and/or \'page\' to array() if you want these included.
// array( \'post\', \'link\', \'page\' ), etc.
$post_types = array_merge( $post_types, array( \'post\' ) );
$query->set(\'post_type\', $post_types );
}
}
}
}
add_action( \'pre_get_posts\', \'ucc_add_cpts_to_pre_get_posts\' );