【问题标题】:Removing the query string from Ajax loaded pagination links从 Ajax 加载的分页链接中删除查询字符串
【发布时间】:2016-06-25 09:56:35
【问题描述】:

我正在使用 this wordpress 插件通过 AJAX 加载我的整个网站。

在标准 WP 查询上一切正常,但是当我尝试在通过 Ajax 加载后对自定义查询的结果进行分页时,Ajax 会将查询字符串插入到 URL 中,从而破坏链接。

分页网址的外观:

http://www.example.com/stuff/page/3

在 AJAX 加载后,它们呈现如下:

http://www.example.com/stuff/?_=1457614717299/page/3

我尝试使用以下两种方法在 Ajax 加载后重置基本 url,删除查询字符串,但两者都不起作用:

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 代码(为清楚起见,没有如上所述重置基本 url):

$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 的 URL 中吗?

【问题讨论】:

    标签: php jquery ajax wordpress pagination


    【解决方案1】:

    好的,以防万一其他人遇到类似的问题,我设法让它工作。这绝不是理想的,它通过硬编码漂亮链接的基本网址来工作。显然,这在重复功能中没有用,但如果您在单个页面模板中使用它(就像我一样),它会工作得很好:

     if( $wp_rewrite->using_permalinks() )
    $pagination_args['base'] = 'http://www.example.com/stuff/' .'page/%#%/';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多