it-swarm.cn

私有插件的更新?

如果我写一个私有插件,有没有办法使用WordPress自动更新机制来更新它?

我想封装功能,但它特定于我自己的5个左右的博客,因此它不适合公共插件资源。但我喜欢易于更新的机制。

有没有办法做到这一点?

112
artlung

看起来适用的代码在wp-includes/update.phpwp_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.phpwp-admin/includes/class-wp-upgrader.php。鉴于这两个函数中的代码,我认为可以注入自己的更新服务器,您只需要查看包详细信息的格式并与之匹配。

45
Annika Backstrom

这个插件为你做了:

私人和商业插件的自动更新

自远古以来,只有在官方WordPress.org插件目录中托管的插件才支持自动更新。现在,我编写了一个PHP库,您可以使用该库为任何插件添加自动更新功能。公共,私人和商业插件 - 现在都可以享受自动更新通知和一键升级带来的好处。

GitHub存储库

40
agileapricot

如果你喜欢免费...并且想要使用像GitHub,GitLab或BitBucket这样的东西,这是一个很好的质量和受支持的插件来处理它(支持私有和企业):

https://github.com/afragen/github-updater

9
sMyles

我正在研究同样的事情。我发现的一些链接可能会有所帮助:

第一个是升级API的一些信息和指针。第二个是代码片段,展示了如何从API实际请求信息。

8
Dougal Campbell

您可能想查看 WordPress开发工具包插件 。我最近将我的专有更新系统迁移到了这个插件。该插件现在作为我的高级插件更新的后端处理器。

这与上面的agileapricot提供的解决方案类似。它将作为标准插件安装在WordPress网站上。您在服务器的生产或预发布目录中托管您的高级.Zip文件和plugins.json(在插件的设置中指定)。

该插件还允许您列出插件版本,甚至可以提供公共,受密码保护或订阅保护页面上的文件的下载。您可以在此处查看 页面上版本列表的示例

几个月来我一直在使用该插件发布我的高级加载项的更改日志,当前版本列表以及我的Premier Subscription持有者的下载列表。现在,在0.7.01版本中,它可用作内联WordPress更新的查询目标。

希望你们中的一些人觉得它很有用。

1
Lance Cleveland

如果您想要一个不必管理的托管解决方案,请查看Kernl( https://kernl.us )。它是一种服务,提供更新插件的基础结构,并使其易于集成到您自己的插件中。

1
Jack Slingerland