WordPress使用Ajax加载文章时分页跳转链接异常怎么修复
问题原因
WordPress 原生的 next_posts_link()、previous_posts_link() 函数默认基于当前执行脚本的URL生成分页地址,你通过 Admin Ajax 加载内容时,当前执行脚本为 admin-ajax.php,因此生成的分页链接会指向该接口地址,而非你前端展示文章的目标页面地址。
解决方法
推荐手动构造分页链接,完全控制输出的URL格式,操作步骤如下:
- 先获取你要展示文章列表的
vendorpage页面对应的固定链接作为基础URL,可通过页面ID调用get_permalink()获取,也可直接写死为固定地址。 - 替换原有分页函数的代码,手动拼接符合你预期的
/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 →</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 ←</a>'; } wp_reset_query();
额外优化提示
如果你需要实现无刷新的Ajax分页效果,可给上述生成的分页链接添加点击事件拦截,阻止默认跳转行为,点击时将页码作为参数传给Ajax接口,加载对应页的内容替换到页面中即可,不需要修改链接地址。
内容的提问来源于stack exchange,提问作者Psyche P
相关产品推荐
相关产品推荐

