Updates for a private plugin?

时间:2010-08-11 作者:artlung

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

我想封装这个功能,但它是我自己的5个博客特有的,所以它不是公共插件资源的好候选。但我喜欢这种简单的更新机制

有没有办法做到这一点

8 个回复
最合适的回答,由SO网友:Annika Backstrom 整理而成

看起来适用的代码在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。组织。从技术上讲,把钥匙放进去是可能的$to_send 授权检查,但据我所知,该功能不受支持

如果你陷入set_site_transient_update_plugins 您可以将自己的包详细信息添加到此变量中。运行插件更新程序时,这些值看起来是可信的。看见wp-admin/update.phpwp-admin/includes/class-wp-upgrader.php. 考虑到这两个函数中的代码,我认为有可能注入您自己的更新服务器,您只需要查看包详细信息的格式并与之匹配

SO网友:agileapricot
SO网友:sMyles

如果你喜欢免费的。。。如果想使用GitHub、GitLab或BitBucket之类的东西,这是一个高质量且受支持的插件,用于处理它(支持私有和企业):

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

SO网友:Dougal Campbell

我也在调查同样的事情。我发现了几个可能有用的链接:

  • WordPress.org Plugin Information API Docs
  • get_api_data() on Pastebin 获取api数据()
    <?php
    /*
    Retrieve items from the plugin API
    */
    function get_api_data($per_page, $page)
    {
        $fields = array(
            \'downloaded\' => true,
            \'author\' => false,
            \'author_profile\' => false,
            \'contributors\' => false,
            \'requires\' => true,
            \'tested\' => false,
            \'compatibility\' => false,
            \'homepage\' => false,
            \'description\' => false,
            \'last_updated\' => true,
            \'added\' => true
        );
        $body = (object) array(\'browse\' => \'new\', \'page\' => $page, \'per_page\' => $per_page, \'fields\' => $fields);
        $post_data = array(\'action\' => \'query_plugins\', \'request\' => serialize($body));
     
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_URL, \'http://api.wordpress.org/plugins/info/1.0/\');
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return = curl_exec($ch);
        curl_close($ch);
     
        return unserialize($return);
    }
    
SO网友:Lance Cleveland

您可能想查看WordPress Development Kit plugin. 我最近将我的专有更新系统迁移到了这个插件。该插件现在充当我的高级插件更新的后端处理器

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

该插件还允许您列出插件版本,甚至可以下载公共、密码保护或订阅保护页面上的文件。您可以看到on-page version list here.

几个月来,我一直在使用该插件发布我的premium附加组件的更改日志、当前版本列表,以及我的Premier订阅持有者的下载列表。现在,在版本0.7.01中,它将作为在线WordPress更新的查询目标

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

SO网友:Jack Slingerland

如果您想要一个无需管理的托管解决方案,请查看Kernl(https://kernl.us). 它是一种提供更新插件基础设施的服务,可以轻松地集成到您自己的插件中

SO网友:Misha Rudrastyh

如果您对创建自己的更新服务器感兴趣,那么不使用只使用两个过滤器挂钩的库就很容易了plugins_apisite_transient_update_plugins

plugins_api – 用于获取插件信息并在模式窗口中显示,例如:

九九

site_transient_update_plugins 需要从服务器推送更新

本教程将详细介绍:https://rudrastyh.com/wordpress/self-hosted-plugin-update.html

SO网友:David

你可以使用这个商业插件:http://autohosted.com/无限制,并具有您可能需要的其他几个功能:

  • 每月无需付费
  • 无限制使用
  • 轻松集成主题和插件
  • 通过域、密钥和;角色
结束

相关推荐