oberonlai / wp-updater
自托管WordPress插件更新服务器
v1.0.3
2024-06-26 02:57 UTC
Requires
- php: >=7.2
README
用于自托管插件更新服务器的简单WordPress类
要求
安装
使用composer安装
在终端中运行以下命令以使用Composer进行安装。
$ composer require oberonlai/wp-updater
WP Metabox PSR-4 自动加载,并可以使用Composer的自动加载器。以下是一个基本示例,尽管您的设置可能因您如何使用Composer而有所不同。
require __DIR__ . '/vendor/autoload.php'; use ODS\Updater; $options = array( ... ); $books = new Updater( $options );
有关使用Composer和自动加载的详细信息,请参阅Composer的基本使用指南。
基本使用
以下是一个设置插件更新器的示例。
// Require the Composer autoloader. require __DIR__ . '/vendor/autoload.php'; // Import PostTypes. use ODS\Updater;
用法
要创建一个更新器,首先实例化一个Updater
类的实例。该类接受一个参数,即一个关联数组。
$updater = new Updater( array( 'plugin_slug' => 'my-plugin', 'version' => '1.0.0', 'json_url' => 'https://mydomain.com/my-plugin.json', ));
许可证管理器
在创建Updater实例时,您可以添加许可证参数。许可证密钥用于验证插件的真实性。许可证密钥存储在数据库中,并用于验证插件的真实性。
$updater = new Updater( array( 'plugin_slug' => 'my-plugin', 'version' => '1.0.0', 'json_url' => 'https://mydomain.com/my-plugin-validate.php', 'license' => get_option( 'my-plugin_license_key' ), ));
在my-plugin-validate.php文件中,您可以添加以下代码来验证许可证密钥。
<?php $array = array( "name" => "My Plugin", "slug" => "my-plugin", "author" => "<a href='https://mydomain.com/my-plugin/'>Author</a>", "author_profile" => "https://mydomain.com", "version" => "1.0.1", "requires" => "5.6", "tested" => "6.2.2", "requires_php" => "7.4", "added" => "2021-04-05 00:00:00", "last_updated" => "2023-06-29 00:00:00", "homepage" => "https://mydoamin.com", "sections" => array( "description" => "My plugin description", "installation" => "My plugin installation", "changelog" => "<p>v1.0.1</p><p>Change log</p>" ), "banners" => array( "low" => "https://mydomain.com/my-plugin-banner-low.jpg", "high" => "https://mydomain.com/my-plugin-banner-high.jpg" ) ); // no update is available by default $update[ 'download_url' ] = ''; if( ! empty( $_GET['license_key' ] ) && license_check_logic( $_GET[ 'license_key' ] ) { $update[ 'download_url' ] = 'pass the URL to plugin ZIP archive here'; } ... header( 'Content-Type: application/json' ); echo json_encode( $update );
license_check_logic
是一个检查许可证密钥的函数。如果许可证密钥有效,则该函数将下载URL添加到更新数组中。
您还可以使用$_GET['slug']
和$_GET['site_url']
从客户端站点获取插件slug和站点URL。
准备工作
您需要一个托管空间来存储插件的信息文件和新版本插件的zip文件。您可以使用Dropbox或Google Drive等空间,或者将其放置在自己的服务器上。我最推荐的是在GitHub上托管,因为它允许与版本控制过程集成。
my-plugin.json
这是插件信息的JSON格式文件的示例。它包括以下字段
{ "name": "My Plugin", "slug": "my-plugin", "author": "<a href='https://mydomain.com/my-plugin/'>Author</a>", "author_profile": "https://mydomain.com", "version": "1.0.1", "download_url": "https://mydomain.com/my-plugin.zip", "requires": "5.6", "tested": "6.2.2", "requires_php": "7.4", "added": "2021-04-05 00:00:00", "last_updated": "2023-06-29 00:00:00", "homepage": "https://mydoamin.com", "sections": { "description": "My plugin description", "installation": "My plugin installation", "changelog": "<p>v1.0.1</p><p>Change log</p>" }, "banners": { "low": "https://mydomain.com/my-plugin-banner-low.jpg", "high": "https://mydomain.com/my-plugin-banner-high.jpg" } }
如果您想为新更新推送通知,只需在插件中递增版本号。download_url指示下载插件新版本的地址。
钩子 - ods_updater_after_purge
允许插件开发者完成插件更新后的额外任务,例如更新数据库表、显示通知警报和其他行为。这些任务可以通过此钩点处理。
add_action('ods_updater_after_purge', function( $upgrader, $options ){ // do stuff when plugin updated. });