当前位置: 首页>>技术问答>>正文


私有插件的更新?

webfans 技术问答 , , 去评论

问题描述

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

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

有没有办法做到这一点?

最佳解决方案

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

次佳解决方案

这个插件为你做了:

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.

GitHub repository

第三种解决方案

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

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

第四种方案

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

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

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2727.html,转载请务必附带本地址声明。