oberonlai/wp-updater

自托管WordPress插件更新服务器

v1.0.3 2024-06-26 02:57 UTC

This package is auto-updated.

Last update: 2024-09-26 03:29:29 UTC


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.
});