WordPress插件的自定义更新检查器。如果您不想将项目托管在正式的WP存储库中,但仍然希望它支持自动更新,则很有用。尽管名称,它也适用于主题。
Github: https://github.com/YahnisElsts/plugin-update-checker
本站下载:
[zrz_file link="https://cdn.getimg.net/npc/2019/wordpress/plugin/plugin-update-checker-4.8.1.zip" name="plugin-update-checker-4.8.1.zip" code=""]插件更新检查器
这是针对WordPress插件和主题的自定义更新检查器库。它使您可以将自动更新通知和一键式升级添加到商业插件,私有主题等。您需要做的就是将插件/主题详细信息放在JSON文件中,将文件放在服务器上,然后将URL传递给库。该库会定期检查URL,以查看是否有可用的新版本,并在必要时向用户显示更新通知。
从用户的角度来看,它就像在WordPress.org上托管的插件和主题一样工作。更新检查器使用大多数WordPress用户熟悉的默认升级UI。
- GitHub整合
- BitBucket集成
- GitLab集成
入门
自托管插件和主题
- 下载最新版本并将
plugin-update-checker
目录复制到您的插件或主题。 - 转到
examples
子目录,然后打开适合您的项目类型的.json文件。用您的插件/主题详细信息替换占位符数据。- 插件示例:
{
"name" : "Plugin Name",
"version" : "2.0",
"download_url" : "http://example.com/plugin-name-2.0.zip",
"sections" : {
"description" : "Plugin description here. You can use HTML."
}
}
- 这是一个最小的示例,其中省略了可选字段。有关受支持字段及其说明的完整列表,请参见此表。
- 主题示例:
{
"version": "2.0",
"details_url": "http://example.com/version-2.0-details.html",
"download_url": "http://example.com/example-theme-2.0.zip"
}
- 这实际上是一个完整的示例,其中显示了所有与主题相关的字段。
version
并且download_url
应该是不言自明的。该details_url
键指定页面,用户将看到,如果他们点击“查看版本1.2.3的详细信息”链接的更新通知。
require 'path/to/plugin-update-checker/plugin-update-checker.php';
$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
'http://example.com/path/to/details.json',
__FILE__, //Full path to the main plugin file or functions.php.
'unique-plugin-or-theme-slug'
);
- 注意:如果您使用的是Composer自动加载器,则不需要显式
require
的库。
如何发布更新
更改version
JSON文件中的数字,并确保其download_url
指向最新版本。如有必要,请更新其他字段。提示:您可以使用wp-update-server自动执行此过程。
默认情况下,库将每12小时检查一次指定的URL是否有更改。您可以通过单击“插件”页面上的“检查更新”链接(位于“访问插件站点”链接旁边)来强制其立即进行检查。主题没有该链接,但是您也可以像这样触发更新检查:
- 安装调试栏。
- 点击管理栏(又称工具栏)中的“调试”菜单。
- 打开“ PUC(您的子弹)”面板。
- 点击“立即检查”按钮。
笔记
- 传递给第二个参数
buildUpdateChecker
必须是主插件文件或主题目录中任何文件的绝对路径。如果遵循“入门”说明,则可以只使用__FILE__
常量。 - 第三个参数(即段塞)是可选的,但建议使用。在大多数情况下,该段应该与您的插件目录的名称相同。例如,如果您的插件位于其中
/wp-content/plugins/my-plugin
,请将slug设置为my-plugin
。如果忽略该段,更新检查器将使用主插件文件的名称作为段(例如my-cool-plugin.php
→my-cool-plugin
)。如果您的插件的通用文件名为,则可能导致冲突plugin.php
。这不会影响主题,因为PUC使用主题目录名称作为默认标记。但是,如果您打算在自己的代码中使用该段代码(例如,过滤更新或覆盖更新检查器行为),则最好进行显式设置。
许可证管理
当前,更新检查器没有任何内置的许可证管理功能。它仅提供了一些挂钩,您可以使用这些挂钩,例如,添加许可证密钥以更新请求($updateChecker->addQueryArgFilter()
)。如果您正在寻找管理和验证许可证的方法,请在此问题中发表您的反馈。
GitHub整合
- 下载最新版本并将
plugin-update-checker
目录复制到您的插件或主题。 - 将以下代码添加到主插件文件或
functions.php
:
require 'plugin-update-checker/plugin-update-checker.php';
$myUpdateChecker = Puc_v4_Factory::buildUpdateChecker(
'https://github.com/user-name/repo-name/',
__FILE__,
'unique-plugin-or-theme-slug'
);
//Optional: If you're using a private repository, specify the access token like this:
$myUpdateChecker->setAuthentication('your-token-here');
//Optional: Set the branch that contains the stable release.
$myUpdateChecker->setBranch('stable-branch-name');
- 仅插件:将
readme.txt
根据WordPress.org插件自述文件标准格式化的文件添加到您的存储库。当用户单击“查看版本1.2.3详细信息”链接时,将显示此文件的内容。
如何发布更新
该库支持几种不同的方法来在GitHub上发布更新。选择最适合您的工作流程的一种。
- GitHub版本使用GitHub上的“发布”功能创建新版本。标签名称和发行标题无关紧要。该描述是可选的,但如果您提供了描述,则当用户单击“插件”页面上的“查看版本xyz详细信息”链接时,将显示该描述。请注意,PUC会忽略标记为“这是预发行版本”的发行版本。如果要使用发布资产,请
enableReleaseAssets()
在创建更新检查器实例后调用该方法:
$myUpdateChecker->getVcsApi()->enableReleaseAssets();
- 标签要发布1.2.3版,请创建一个名为
v1.2.3
或的新Git标签1.2.3
。而已。PUC不需要严格遵守SemVer。这些都是有效的标签名称:v1.2.3
,v1.2-foo
,1.2.3_rc1-ABC
,1.2.3.4.5
。但是,请注意,它不足以过滤掉alpha / beta / RC版本。如果这是一个问题,你可能需要使用GitHub的版本或分支代替。 - 稳定的分支将更新检查器指向稳定的生产就绪分支:
$updateChecker->setBranch('branch-name');
- PUC将定期检查
Version
主插件文件中的标头,或者style.css
如果它大于已安装的版本,则显示通知。注意:如果将分支设置为master
(默认值),更新检查器将首先查找最新版本和标签。master
如果找不到其他合适的分支,它将仅使用分支。
笔记
该库将从发布/标签/分支的以下部分提取更新详细信息:
- 版本号
- “版本”插件标头。
- 最新的GitHub版本或标签名称。
- 变更日志
- 的“更改日志”部分
readme.txt
。 - 以下文件之一:CHANGES.md,CHANGELOG.md,changes.md,changelog.md
- GitHub发行说明。
- 的“更改日志”部分
- 必需和经过测试的WordPress版本
- 中的“至少需要”和“经过测试”字段
readme.txt
。 - 以下插件头:
Required WP
,Tested WP
,Requires at least
,Tested up to
- 中的“至少需要”和“经过测试”字段
- “最新更新”时间戳
- 最新GitHub版本的创建时间戳。
- 所选标签或分支中的最新提交。
- 下载次数
download_count
最新版本的统计信息。- 如果您不使用GitHub版本,则不会有下载统计信息。
- 其他插件详细信息-作者,首页URL,描述
- 的“说明”部分
readme.txt
。 - 远程插件头(即GitHub上的最新版本)。
- 本地插件头(即当前安装的版本)。
- 的“说明”部分
- 评分,横幅,屏幕截图
- 不支持。