You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress使用Ajax加载文章时分页跳转链接异常怎么修复

问题原因

WordPress 原生的 next_posts_link()、previous_posts_link() 函数默认基于当前执行脚本的URL生成分页地址,你通过 Admin Ajax 加载内容时,当前执行脚本为 admin-ajax.php,因此生成的分页链接会指向该接口地址,而非你前端展示文章的目标页面地址。

解决方法

推荐手动构造分页链接,完全控制输出的URL格式,操作步骤如下:

  1. 先获取你要展示文章列表的vendorpage页面对应的固定链接作为基础URL,可通过页面ID调用get_permalink()获取,也可直接写死为固定地址。
  2. 替换原有分页函数的代码,手动拼接符合你预期的/page/{页数}/格式链接:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;  
$the_query = new WP_Query( 
    array( 
      'posts_per_page' => 6, 
      'post_type' => 'post',
      'paged' => $paged
    ) 
);

// 替换下方的参数为你实际的vendorpage页面ID,也可直接赋值为你的页面地址字符串,比如 'http://localhost/vendor/vendorpage/'
$base_page_url = get_permalink( 123 ); 

// 输出下一页链接
if ( $paged < $the_query->max_num_pages ) {
    $next_page_num = $paged + 1;
    $next_url = esc_url( trailingslashit( $base_page_url ) . 'page/' . $next_page_num . '/' );
    echo '<a href="' . $next_url . '">Next &rarr;</a>';
}

// 输出上一页链接
if ( $paged > 1 ) {
    $prev_page_num = $paged - 1;
    if ( $prev_page_num === 1 ) {
        $prev_url = esc_url( $base_page_url );
    } else {
        $prev_url = esc_url( trailingslashit( $base_page_url ) . 'page/' . $prev_page_num . '/' );
    }
    echo '<a href="' . $prev_url . '">Previous &larr;</a>';
}

wp_reset_query();

额外优化提示

如果你需要实现无刷新的Ajax分页效果,可给上述生成的分页链接添加点击事件拦截,阻止默认跳转行为,点击时将页码作为参数传给Ajax接口,加载对应页的内容替换到页面中即可,不需要修改链接地址。


内容的提问来源于stack exchange,提问作者Psyche P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:27:01