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

如何在WordPress站点自定义API函数中实现分页功能

实现方法

你需要修改现有代码,增加参数接收、分页计算、SQL语句调整三步即可实现需求:

1. 接收分页参数

首先在函数内获取接口请求传递的page(页码)和per_page(每页条目数)参数,设置默认值同时做合法性校验:

// 接收参数,默认第1页,每页15条
$page = isset($_REQUEST['page']) ? (int)$_REQUEST['page'] : 1;
$perPage = isset($_REQUEST['per_page']) ? (int)$_REQUEST['per_page'] : 15;
// 合法性修正,避免非法参数报错
$page = $page < 1 ? 1 : $page;
$perPage = $perPage < 1 ? 15 : $perPage;
// 计算MySQL查询偏移量
$offset = ($page - 1) * $perPage;

2. 修改SQL查询语句

把原来固定的LIMIT 100改成动态的偏移量+每页条数:

// 分页查询语句
$query = "SELECT * FROM coins LIMIT $offset, $perPage";

注:这里两个参数都已经强转为int类型,不存在SQL注入风险,不需要额外做转义处理。

3. (可选)补充分页元信息返回

建议在返回结果里增加总条目数、总页数等信息,方便安卓端做分页交互:

// 先查询总条目数
$countResult = mysqli_query($conn, "SELECT COUNT(*) as total FROM coins");
$total = mysqli_fetch_assoc($countResult)['total'];
$totalPage = ceil($total / $perPage);

// 最后返回的时候加上元信息
$json_arrd = [
    'data' => $json_arr,
    'meta' => [
        'current_page' => $page,
        'per_page' => $perPage,
        'total' => (int)$total,
        'total_page' => (int)$totalPage
    ]
];

修改后的完整代码

function get_all_coin()
{
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // 接收分页参数
    $page = isset($_REQUEST['page']) ? (int)$_REQUEST['page'] : 1;
    $perPage = isset($_REQUEST['per_page']) ? (int)$_REQUEST['per_page'] : 15;
    $page = $page < 1 ? 1 : $page;
    $perPage = $perPage < 1 ? 15 : $perPage;
    $offset = ($page - 1) * $perPage;

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // 检查连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    // 查询总条目数
    $countResult = mysqli_query($conn, "SELECT COUNT(*) as total FROM coins");
    $total = mysqli_fetch_assoc($countResult)['total'];
    $totalPage = ceil($total / $perPage);

    // 分页查询数据
    $query = "SELECT * FROM coins LIMIT $offset, $perPage";
    $result = mysqli_query($conn, $query);

    $json_arr = [];
    if (mysqli_num_rows($result) > 0) {
        while ($row = mysqli_fetch_assoc($result)) {
            $json = [];
            $json['id'] = (int) $row['id'];
            $json['name'] = $row['name'];
            // ...其他字段
            $json_arr[] = $json;
        }
    }

    header('Content-type:application/json;charset=utf-8');
    $json_arrd = [
        'data' => $json_arr,
        'meta' => [
            'current_page' => $page,
            'per_page' => $perPage,
            'total' => (int)$total,
            'total_page' => (int)$totalPage
        ]
    ];
    return $json_arrd;
}

修改完成后安卓端直接通过请求链接携带参数即可,比如你的接口地址?page=2&per_page=20就能获取第2页、每页20条的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:09:03