我使用this wordpress插件通过AJAX加载我的整个网站。
在标准WP查询上一切正常,但是当我尝试在通过Ajax加载后对自定义查询的结果进行分页时,Ajax会将查询字符串插入到URL中,从而破坏链接。
分页网址的外观如何:
http://www.example.com/stuff/page/3
加载AJAX后,它们会像这样呈现:
http://www.example.com/stuff/?_=1457614717299/page/3
我尝试在Ajax加载后使用以下两种方法重置基本网址,删除查询字符串但两者都不起作用:
if( ! empty( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ] ) &&
strtolower( $_SERVER[ 'HTTP_X_REQUESTED_WITH' ]) == 'xmlhttprequest' ) {
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');
}
并且:
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');
}
以下是查询和分页的完整php代码(如上所述,为了清晰起见,没有重置基本网址):
$rows_per_page = 3;
$current = (intval(get_query_var('paged'))) ? intval(get_query_var('paged')) : 1;
$rows = $wpdb->get_results("SELECT post_id FROM wp_favorite_show WHERE user_id = $user_ID");
global $wp_rewrite;
$pagination_args = array(
'base' => @add_query_arg('paged','%#%'),
'format' => '',
'total' => ceil(sizeof($rows)/$rows_per_page),
'current' => $current,
'show_all' => false,
'type' => 'plain',
);
if( $wp_rewrite->using_permalinks() )
$pagination_args['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');
if( !empty($wp_query->query_vars['s']) )
$pagination_args['add_args'] = array('s'=>get_query_var('s'));
$start = ($current - 1) * $rows_per_page;
$end = $start + $rows_per_page;
$end = (sizeof($rows) < $end) ? sizeof($rows) : $end;
然后在我的循环后,我显示这样的分页:
echo paginate_links($pagination_args);
我已经尝试了其他一些方法,但没有删除查询。
任何人都知道如何防止将查询字符串注入返回的Ajax网址?
答案 0 :(得分:0)
好的,以防万一其他人遇到类似的问题,我设法让它运转起来。它绝不是理想的,它通过对基本URL进行硬编码来实现漂亮的链接。显然这在重复功能中没有用,但是如果你在单个页面模板中使用它(就像我一样)它会工作得很好:
if( $wp_rewrite->using_permalinks() )
$pagination_args['base'] = 'http://www.example.com/stuff/' .'page/%#%/';