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

WordPress REST API分页如何获取动态变化的最后一页offset值

解决方案

WordPress REST API 本身提供了总文章数、总页数的官方获取方式,不需要额外开发自定义接口:

核心原理

你发起任意文章列表查询请求时,WordPress 会在响应头中返回两个字段:

  • X-WP-Total:当前查询条件下的总文章数量
  • X-WP-TotalPages:当前查询条件下的总页数

最后一页offset计算逻辑

固定好你每页的per_page参数后,用以下公式计算即可:

最后一页offset = (总页数 - 1) * 每页展示数量(per_page)

如果担心总页数为空的异常情况,可以加个保底判断:

const lastPageOffset = totalPages ? (totalPages - 1) * perPage : 0

Vue+Axios场景实现示例

如果是跨域请求,你需要先在 WordPress 站点的functions.php中添加以下配置,允许前端读取这两个响应头,否则会因为浏览器跨域安全策略拿不到对应字段:

add_filter('rest_post_dispatch', function($response) {
  $response->header('Access-Control-Expose-Headers', 'X-WP-Total, X-WP-TotalPages');
  return $response;
});

前端请求代码参考:

// 分页相关响应式变量,也可以直接存在组件内
const perPage = ref(12)
const totalPages = ref(1)
const lastPageOffset = ref(0)

async function getPosts(currentPage = 1) {
  const offset = (currentPage - 1) * perPage.value
  const res = await axios.get('https://example-page.com/wp-json/wp/v2/posts', {
    params: {
      categories: 5,
      per_page: perPage.value,
      offset: offset
    }
  })
  // 读取响应头更新总页数
  totalPages.value = parseInt(res.headers['x-wp-totalpages'] || 1)
  // 自动更新最后一页offset
  lastPageOffset.value = (totalPages.value - 1) * perPage.value
  // 后续处理返回的文章列表逻辑...
}

每次发起请求都会同步更新总页数和最后一页offset,就算后台文章总数变动,下次请求就会自动拿到最新的数值,不需要手动维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:45:01