我创建了一个使用内置函数paginate_links
的函数。
但是分页不正常,因为URL写错了。
我想要的网址如下domain.com/properties/page/2/?foo=bar
正在输出的网址为domain.com/properties/?foo=bar/page/2/
这是我的代码
function paginate($max_num_pages) {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['page'] > 1 ? $current = $wp_query->query_vars['page'] : $current = 1;
$pagination = array(
'base' => @add_query_arg('page','%#%'),
'format' => '',
'total' => $max_num_pages,
'current' => $current,
'show_all' => true,
'end_size' => 1,
'mid_size' => 2,
'prev_next' => True,
'prev_text' => __('« Previous'),
'next_text' => __('Next »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);
if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'page' );
if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );
echo paginate_links( $pagination );
}
答案 0 :(得分:3)
这是最终为我工作的东西。
我必须将$wp_query->query_vars
更改为paged
,我删除了检查我是否使用perma链接的行if ( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
function paginate($max_num_pages) {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
$pagination = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => $max_num_pages,
'current' => $current,
'show_all' => true,
'end_size' => 1,
'mid_size' => 2,
'prev_next' => True,
'prev_text' => __('« Previous'),
'next_text' => __('Next »'),
'type' => 'plain',
'add_args' => false,
'add_fragment' => ''
);
//if ( $wp_rewrite->using_permalinks() ) $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
if ( !empty($wp_query->query_vars['s']) ) $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
echo paginate_links( $pagination );
}
答案 1 :(得分:1)
根据the documentation for paginate_links
,默认format
看起来类似于您所追求的内容,但您通过设置'format' => ''
来覆盖该值。
尝试删除该选项或将其设置为您所追求的内容:'format' => '?foo=bar%#%'