matthiasweb/wordpress-plugin-updater

一个用于WordPress插件的库,利用WordPress许可证服务器进行许可证验证和自动更新。

2.0.2 2020-06-16 12:45 UTC

README

WordPress许可证服务器的WordPress插件集成。

前言

这是一个从Capevace/wordpress-plugin-updater的原始代码分叉的仓库。这个分叉的仓库也发布到了packagist,因此可以通过composer进行安装。请注意,npm脚本npm run replace会将原始的smoolabs/Capevace命名空间替换为MatthiasWeb以避免命名空间冲突。感谢Capevace(原始作者),这个仓库只是添加了一些修改以满足MatthiasWeb插件的需求。

使用方法

您有两种方法可以集成此功能并为您自己的插件启用自动更新。

使用Composer

如果您已经在使用Composer,您就知道该怎么做。

如果没有,您需要在您的计算机上安装Composer并运行composer init。这将初始化Composer到您的包根目录。

完成之后,运行这个

composer require matthiasweb/wordpress-plugin-updater:dev-master

Composer会然后安装集成到vendor/文件夹。

现在要包含插件文件,只需包含vendor/autoload.php文件。

<?php

require_once 'vendor/autoload.php';

不使用Composer

将此仓库作为.zip文件下载,并将其解压缩到您的插件文件中。然后只需包含loader.php文件。

<?php

require_once '/path/to/updater/loader.php';

设置

您只需做一件事,在将集成包含到您的项目后启用它。

在您的插件主文件中,粘贴此代码

$client = \MatthiasWeb\WPU\V4\WPLSController::initClient('http://url-to-wpls.com', array(
    'name'      => 'Example Plugin Name',
    'version'   => '1.0.0',
    'path'      => __FILE__,
    'slug'      => 'example-plugin-slug'
));

现在,将示例插件名称替换为您的插件名称,将http://update-server-url.com替换为您托管更新服务器的主机URL,将my-example-plugin替换为您插件的缩略名(例如插件文件夹的名称),将1.0.0替换为您当前插件的版本。

这就完成了!插件现在将在您在服务器上提供更新后自动接收更新(当然,只有当用户提供许可证时)!

在输入许可证之前禁用功能

您可能希望阻止您的购买者在输入许可证之前使用您的插件。您可以轻松地禁用此类功能

// Your Updater instance
$client = \MatthiasWeb\...;

if ($client->isActivated()) {
  /* 
   * The User has activated the plugin.
   * Add your plugin functionality here.
   */
} else {
  /* 
   * The User has *NOT* activated the plugin.
   * Add activation messages etc here, for example on your plugin settings page.
   */
}

请确保这符合Envato关于在许可证后面锁定功能的规则!否则,插件可能不会被接受。

启用通讯录功能

您可以创建一个额外的输入框,让用户输入电子邮件地址。还有一个复选框,用户可以选择是否接收通讯录。

$client = \MatthiasWeb\WPU\V4\WPLSController::initClient('http://url-to-wpls.com', array(
    // [...]
    'slug'      => 'example-plugin-slug',
    'newsletterPrivacy' => 'https://matthias-web.com/privacypolicy/'
    // [...]
));

您必须添加配置参数newsletterPrivacy并带有您隐私页面的链接。如果用户同意,则会触发以下操作

// do_action('wpls_email_' . $client->config->slug, $email); // Your slug

add_action('wpls_email_example-plugin-slug', function($email) {
  // Do some POSTs
});