版本升级
TextPress 提供了完整的版本升级 API,让你的主题和插件支持在线更新检测。
适用场景
当你在本平台发布主题或插件后,可以通过以下 API 让用户检测并下载最新版本。
检查更新接口
GET
/api/update/check
检查指定产品是否有新版本可用。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
slug | string | 是 | 产品唯一标识(slug) |
version | string | 否 | 当前安装的版本号,如 v1.0.0 |
type | string | 否 | 产品类型:theme 或 plugin,默认 theme |
请求示例
HTTP
GET /api/update/check?slug=my-theme&version=v1.0.0&type=theme
响应示例
JSON
{
"success": true,
"has_update": true,
"product": {
"id": 1,
"name": "My Theme",
"slug": "my-theme",
"description": "一个精美的主题"
},
"latest_version": "v1.2.0",
"current_version": "v1.0.0",
"download_url": "/uploads/versions/1/v1.2.0_1702456789.zip",
"changelog": "1. 新增深色模式\n2. 修复若干 Bug",
"min_version": "v1.0.0",
"file_size": 2621440,
"released_at": "2024-12-13 10:30:00"
}
响应字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 请求是否成功 |
has_update | boolean | 是否有新版本 |
latest_version | string | 最新版本号 |
download_url | string | 下载地址(仅当有更新时返回) |
changelog | string | 更新日志 |
min_version | string | 最低兼容版本 |
file_size | int | 文件大小(字节) |
released_at | string | 发布时间 |
下载更新包
GET
/api/update/download/{id}
下载指定产品的最新版本安装包。
路径参数
| 参数 | 类型 | 说明 |
|---|---|---|
id | int | 产品 ID |
请求示例
HTTP
GET /api/update/download/1
响应
成功时直接返回 ZIP 文件流,失败时返回 404 错误。
集成示例
以下是在你的主题或插件中集成更新检测的示例代码:
PHP 示例
PHP
<?php
/**
* 检查主题更新
*/
function check_theme_update() {
$api_url = 'https://your-site.com/api/update/check';
$params = [
'slug' => 'my-theme',
'version' => 'v1.0.0',
'type' => 'theme'
];
$response = file_get_contents($api_url . '?' . http_build_query($params));
$data = json_decode($response, true);
if ($data['success'] && $data['has_update']) {
// 有新版本可用
echo "发现新版本: " . $data['latest_version'];
echo "更新日志: " . $data['changelog'];
echo "下载地址: " . $data['download_url'];
}
return $data;
}
// 在后台显示更新提示
add_action('admin_notices', function() {
$update = check_theme_update();
if ($update['has_update']) {
echo '<div class="notice">主题有新版本 ' . $update['latest_version'] . ' 可用</div>';
}
});
JavaScript 示例
JavaScript
// 检查更新
async function checkUpdate() {
const response = await fetch('/api/update/check?slug=my-theme&version=v1.0.0');
const data = await response.json();
if (data.success && data.has_update) {
console.log('发现新版本:', data.latest_version);
console.log('更新日志:', data.changelog);
// 显示更新提示
showUpdateNotification(data);
}
return data;
}
// 下载更新
function downloadUpdate(productId) {
window.location.href = '/api/update/download/' + productId;
}
版本号规范
版本号格式
建议使用语义化版本号,格式为 vX.Y.Z,例如 v1.0.0、v2.1.3
- 主版本号 (X):不兼容的 API 修改
- 次版本号 (Y):向下兼容的功能性新增
- 修订号 (Z):向下兼容的问题修正
最佳实践
1
定期检查
建议每天或每周检查一次更新,避免频繁请求 API
2
缓存结果
将检查结果缓存到本地,减少 API 调用次数
3
备份数据
更新前建议用户备份当前版本和数据
4
版本兼容
检查 min_version 字段,确保用户当前版本满足升级要求