问题描述
如果我写一个私人插件,有没有办法使用 WordPress auto-update 机制来更新它?
我想封装这个功能,但它是我自己的 5 个左右的博客,因此它不是一个很好的公共插件资源的候选人。但我喜欢 easy-updating 机制。
有没有办法做到这一点?
最佳解决方案
看起来像适用的代码是在 wp-includes/update.php
,wp_update_plugins()
:
$to_send = (object) compact('plugins', 'active');
$options = array(
'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3),
'body' => array( 'plugins' => serialize( $to_send ) ),
'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' )
);
$raw_response = wp_remote_post('http://api.wordpress.org/plugins/update-check/1.0/', $options);
它具体检查 api.wordpress.org 。从技术上说,可以通过 $to_send
中的一个密钥委托支票,但是据我所知,这不是一个支持的功能。
如果您挂接到 set_site_transient_update_plugins
,您可以将自己的包细节添加到此变量中。当您运行插件更新程序时,这些值将被信任。参见 wp-admin/update.php
和 wp-admin/includes/class-wp-upgrader.php
。鉴于这两个函数中的代码,我认为可以注入自己的更新服务器,您只需要查看包细节是如何格式化和匹配的。
次佳解决方案
这个插件为你做:
Automatic Updates For Private And Commercial Plugins
Since time immemorial, only plugins hosted in the official WordPress.org plugin directory have supported automatic updates. Now, I’ve written a PHP library that you can use to add automatic update capabilities to any plugin. Public, private and commercial plugins alike – all can now enjoy the benefits of automatic update notifications and one-click upgrades.
第三种解决方案
我正在寻找同样的事情。我发现有几个链接可能有帮助:
- WordPress.org 插件信息 API 文档
- get_api_data() 在 Pastebin 上
第一个是升级 API 的一些信息和指针。第二个是代码片段,显示如何从 API 中实际请求信息。
第四种方案
如果您喜欢免费… 并且想要使用像 GitHub,GitLab 或 BitBucket 这样的东西,这是一个很好的质量和支持的插件来处理它 (支持私人和企业):
https://github.com/afragen/github-updater
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。