问题描述

如果我写一个私人插件,有没有办法使用 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

第三种解决方案

我正在寻找同样的事情。我发现有几个链接可能有帮助:

  • WordPress.org 插件信息 API 文档
  • get_api_data() 在 Pastebin 上

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

第四种方案

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

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。