为WordPress主题添加自动化更新功能,可以通过使用WordPress的内置函数和插件来实现。以下是一种常用的方法:
// 添加主题更新检查
add_action('after_setup_theme', 'my_theme_add_update_check');
function my_theme_add_update_check() {
$theme_slug = get_template();
// 指定更新检查的URL,注意将YOUR_THEME_SLUG替换为正确的主题识别符
$api_url = 'https://api.example.com/update-check/' . $theme_slug;
// 调用WordPress的主题自动更新函数
$response = wp_remote_get($api_url);
if (!is_wp_error($response)) {
$body = wp_remote_retrieve_body($response);
$data = json_decode($body);
if ($data) {
// 设置主题更新检查的参数
$current_version = wp_get_theme()->Version;
$new_version = $data->new_version;
$package_url = $data->package_url;
// 注册更新检查回调函数
add_filter('pre_set_site_transient_update_themes', 'my_theme_update_transient');
add_filter('themes_api', 'my_theme_api_call', 10, 3);
add_filter('upgrader_post_install', 'my_theme_after_update', 10, 3);
}
}
}
// 主题更新检查的回调函数
function my_theme_update_transient($transient) {
if (empty($transient->checked)) {
return $transient;
}
// 设置主题参数
$theme_slug = get_template();
$new_version = $data->new_version;
$package_url = $data->package_url;
// 检查是否有新版本可用
if (version_compare($transient->checked[$theme_slug], $new_version, '<')) {
$transient->response[$theme_slug] = array(
'theme' => $theme_slug,
'new_version' => $new_version,
'url' => '',
'package' => $package_url
);
}
return $transient;
}
// 主题API调用的回调函数
function my_theme_api_call($def, $action, $args) {
if ($args->slug == get_template()) {
// 设置主题参数
$theme_slug = get_template();
$new_version = $data->new_version;
$package_url = $data->package_url;
// 返回主题信息
$def = array(
'name' => get_template(),
'version' => $new_version,
'author' => '',
'download_link' => $package_url,
'sections' => array(
'changelog' => '',
'description' => '',
'installation' => '',
'screenshots' => '',
),
);
}
return $def;
}
// 主题更新后的回调函数
function my_theme_after_update($response, $hook_extra, $result) {
// 执行主题更新后的操作
}
将上述代码粘贴到主题的functions.php文件中。
在WordPress后台,创建一个API接口来提供主题更新的信息。这可以是一个返回JSON格式数据的简单脚本,例如:
<?php
$theme_slug = 'YOUR_THEME_SLUG'; // 将YOUR_THEME_SLUG替换为正确的主题识别符
$response = array(
'new_version' => '1.0.1', // 新版本号
'package_url' => 'https://example.com/your-theme.zip', // 下载链接
);
header('Content-Type: application/json');
echo json_encode($response);
exit;
?>
将上述代码保存为一个php文件,例如update-check.php
,并将其上传到您的服务器的根目录下。
更新$api_url
变量中的URL,将其设置为上述API接口的URL。
完成以上步骤后,您的WordPress主题将具备自动更新的功能。当有新版本主题可用时,WordPress将在后台通知用户,并在用户确认后自动下载和安装更新的主题文件。