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
相关产品推荐
相关产品推荐

