题
如果我编写一个私人插件,是否有任何方法可以使用WordPress自动升级机制对其进行更新?
我想封装该功能,但它是我自己的5个左右博客的特定功能,因此它不是公共插件资源的好候选人。但是我喜欢简单的更新机制。
有没有办法做到这一点?
解决方案
看起来适用的代码在 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
. 。鉴于这两个功能中的代码,我认为可以注入您自己的更新服务器,您只需要查看如何格式化包装详细信息并与之匹配。
其他提示
该插件为您完成:
私人和商业插件的自动更新
自远古时代以来,只有在官方WordPress.org插件目录中托管的插件支持自动更新。现在,我已经编写了一个PHP库,您可以使用该库将自动更新功能添加到任何插件。公共,私人和商业插件 - 现在都可以享受自动更新通知和一键式升级的好处。
如果您喜欢免费...并想使用GitHub,Gitlab或Bitbucket之类的东西,这是一个很好的质量和支持的插件(支持私人和企业):
我正在研究同一件事。我发现的几个链接可能会有所帮助:
首先是升级API的一些信息和指示。第二个是代码片段,显示了如何从API中实际请求信息。
您可能想检查一下 WordPress开发套件插件. 。我最近将我的专有更新系统迁移到了此插件。该插件现在是我的高级插件更新的后端处理器。
这与上面的AgileApricot提供的解决方案相似。它将在WordPress站点上作为标准插件安装。您可以在服务器上托管Premium .ZIP文件和插件。
该插件还允许您列出插件版本,甚至可以在公共,受密码保护或订阅保护的页面上为文件提供下载。您可以看到一个示例 页面版本列表此处.
我已经使用了几个月的时间来发布我的高级附加组件,当前版本列表的更改日志,并为我的Premier订阅持有人下载列表。现在,使用0.7.01版本,它可以作为Inline WordPress更新的查询目的地。
希望你们中的一些人发现它有用。
如果您想要不必管理的托管解决方案,请查看Kernl(https://kernl.us)。它的服务提供了用于更新插件的基础架构,并使其易于集成到您自己的插件中。
您可以使用此商业插件: http://autohosted.com/无限制,您可能还需要其他几个功能:
- 没有每月收费
- 无限使用
- 简单地与主题和插件集成
- 按域,钥匙和角色进行身份验证