您将实现以下功能:
https://make.wordpress.org/core/2021/06/29/introducing-update-uri-plugin-header-in-wordpress-5-8/
首先,您将添加
Update URI:
带有自定义域的插件标题。
其次,您可以使用过滤器名称向插件添加过滤器update_plugins_{$hostname}
哪里{$hostname}
是你给你的Update URI:
. E、 g。Update URI: example.com
会有过滤器update_plugins_example.com
.
在这个过滤器中,您将运行一些代码来检查插件是否有更新。代码运行完成后,它将返回答案。
https://developer.wordpress.org/reference/hooks/update_plugins_hostname/
您返回的值需要是一个包含参数部分中的值的数组。或者它可以返回
false
表示没有更新。
第二个和第三个参数可用于确定哪个插件WP请求更新信息。
使用此过滤器的示例非常少,它是非常新的,文档描述了如何使用它,而不是演示。
下面是一些未经测试的伪代码,我认为这样的过滤器可能是什么样子的:
add_filter( \'update_plugins_example.com\', function( $update, array $plugin_data, string $plugin_file, $locales ) {
// only check this plugin
if ( $plugin_file !== \'myplugin.php\' ) {
return $update;
}
// already done update check elsewhere
if ( ! empty( $update ) ) {
return $update;
}
// CODE GOES HERE TO FIND UPDATE, maybe ask a server what
// the latest version number is and call `version_compare`?
$is_update_available = true;
// no updates found
if ( ! $is_update_available ) {
return false;
}
// Update found?
return [
\'slug\' => \'myplugin\',
\'version\' => \'9000\',
\'url\' => \'example.com/myplugin/\',
\'package\' => \'example.com/newversion.zip\',
];
}, 10, 4 );
至于更新的实际检查,这完全取决于您,没有规范的正确方法可以做到这一点。
例如,您可以掷硬币并返回乱七八糟的值。您可以向服务器上的文件发出HTTP请求,以获取最新版本号并将其与安装的版本进行比较。您可以实现许可证密钥检查,或ping Githubs API以获得发布版本,等等。这完全取决于您自己。