如果我编写一个私人插件,是否有任何方法可以使用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.phpwp-admin/includes/class-wp-upgrader.php. 。鉴于这两个功能中的代码,我认为可以注入您自己的更新服务器,您只需要查看如何格式化包装详细信息并与之匹配。

其他提示

该插件为您完成:

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

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

GitHub存储库

如果您喜欢免费...并想使用GitHub,Gitlab或Bitbucket之类的东西,这是一个很好的质量和支持的插件(支持私人和企业):

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

我正在研究同一件事。我发现的几个链接可能会有所帮助:

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

您可能想检查一下 WordPress开发套件插件. 。我最近将我的专有更新系统迁移到了此插件。该插件现在是我的高级插件更新的后端处理器。

这与上面的AgileApricot提供的解决方案相似。它将在WordPress站点上作为标准插件安装。您可以在服务器上托管Premium .ZIP文件和插件。

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

我已经使用了几个月的时间来发布我的高级附加组件,当前版本列表的更改日志,并为我的Premier订阅持有人下载列表。现在,使用0.7.01版本,它可以作为Inline WordPress更新的查询目的地。

希望你们中的一些人发现它有用。

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

您可以使用此商业插件: http://autohosted.com/无限制,您可能还需要其他几个功能:

  • 没有每月收费
  • 无限使用
  • 简单地与主题和插件集成
  • 按域,钥匙和角色进行身份验证
许可以下: CC-BY-SA归因
scroll top