如果我编写了一个私有插件,是否可以使用WordPress自动更新机制来对其进行更新?
我想封装功能,但是它特定于我自己的5个左右的博客,因此它不是公共插件资源的理想选择。但我喜欢这种易于更新的机制。
有没有办法做到这一点?
如果我编写了一个私有插件,是否可以使用WordPress自动更新机制来对其进行更新?
我想封装功能,但是它特定于我自己的5个左右的博客,因此它不是公共插件资源的理想选择。但我喜欢这种易于更新的机制。
有没有办法做到这一点?
Answers:
看起来适用的代码在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库,您可以使用该库向任何插件添加自动更新功能。公共,私人和商业插件都一样–现在都可以享受自动更新通知和一键式升级的好处。
wp-update-server
由同一作者编写的软件包;)github.com/YahnisElsts/wp-update-server通过使用此服务器,您可以保护插件,如这里描述:w-shadow.com/blog/2013/03/19/...
我正在调查同一件事。我发现一些可能有用的链接:
首先是一些信息和指向升级API的指针。第二个是显示如何实际从API请求信息的代码段。
您可能需要查看WordPress开发工具包插件。我最近将专有更新系统迁移到了此插件。该插件现在用作我的高级插件更新的后端处理器。
这在设置上类似于上面的agileapricot提供的解决方案。它将作为标准插件安装在WordPress网站上。您将高级.zip文件和plugins.json托管在服务器上的生产或预发行目录中(在插件的设置中指定)。
该插件还允许您列出插件版本,甚至可以为公共,受密码保护或受订阅保护的页面上的文件提供下载。您可以在此处查看页面版本列表的示例。
我已经使用该插件几个月来发布高级附件的更改日志,当前版本列表以及高级订阅持有者的下载列表。现在,版本为0.7.01,它可以用作内联WordPress更新的查询目标。
希望你们中的一些人觉得有用。
您可以使用以下商业插件:http : //autohosted.com/ 无限制,并可能需要其他一些功能: