借助Github 为第三方WordPress 主题/插件添加“自动更新”功能
WordPress 官方的主题/插件依赖与官方服务器可以实现后台自动更新或升级。如果你的作品托管到Github 上则可以通过下面几个projects 方便实现WordPress 主题/插件添加“更新升级”功能——就像官方的那样自动升级。
WordPress-GitHub-Plugin-Updater 简介
WordPress-GitHub-Plugin-Updater 是一个WordPress 的第三方类。如果你的WordPress 插件是托管到Github 上的,借助这个类可以实现类似WordPress 官方的自动更新升级机制。难得可贵的是,这个类不仅仅支持公共仓库(public repositories),也支持私有仓库的项目(private repositories)——当然前提你是GitHub 的付费用户。支持私有仓库意味着你可以将你的收费插件托管到Github 上而不必担心文件泄露的问题。
WordPress-GitHub-Plugin-Updater 使用方法
Github 主页:https://github.com/jkudish/WordPress-GitHub-Plugin-Updater
下载zip 压缩包解压后安装WordPress后台上,项目本身就是一个插件,你可以安装来查看是如何的运作的。
要集成到你的插件的话,将updater.php 放到你的插件目录下,然后在插件主文件写入下面的代码,注意相关文件名称要修改为你的插件的:
add_action( 'init', 'github_plugin_updater_test_init' ); function github_plugin_updater_test_init() { include_once 'updater.php'; define( 'WP_GITHUB_FORCE_UPDATE', true ); if (is_admin()) { // note the use of is_admin() to double check that this is happening in the admin $config = array( 'slug' => plugin_basename(__FILE__), // this is the slug of your plugin 'proper_folder_name' => 'plugin-name', // this is the name of the folder your plugin lives in 'api_url' => 'https://api.github.com/repos/username/repository-name', // the github API url of your github repo 'raw_url' => 'https://raw.github.com/username/repository-name/master', // the github raw url of your github repo 'github_url' => 'https://github.com/username/repository-name', // the github url of your github repo 'zip_url' => 'https://github.com/username/repository-name/zipball/master', // the zip url of the github repo 'sslverify' => true // wether WP should check the validity of the SSL cert when getting an update, see https://github.com/jkudish/WordPress-GitHub-Plugin-Updater/issues/2 and https://github.com/jkudish/WordPress-GitHub-Plugin-Updater/issues/4 for details 'requires' => '3.0', // which version of WordPress does your plugin require? 'tested' => '3.3', // which version of WordPress is your plugin tested up to? 'readme' => 'README.md', // which file to use as the readme for the version number 'access_token' => '', // Access private repositories by authorizing under Appearance > Github Updates when this example plugin is installed ); new WP_GitHub_Updater($config); } } |
---|
access_token
这个参数是私有仓库才要的,如果是公开项目不必填写之。私有项目必须按照下面的步骤去获取Github 应用的Client ID 与Client Secret 激活之。
配置的最后一步是在Github 的readme.md 文件任意一行添加如下代码识别最新版本:
~Current Version:1.4~
如果填写正确,那么后台会适时提示更新,如下图:
其他类似的projects
不过经过Jeff 的测试,目前这个类的最新版(写本文时候是1.6)尚不稳定,会有报错信息。官方readme.md 文件上也写着1.6 (in development)。如果喜欢,可以下载旧版本使用。
或者采用其他类似功能的projects:
Plugin-Update
该project 在tutsplus上有详细介绍(地址), Jeff 本人没有深入研究。
github-updater
一个插件,支持托管在Github 上的公开仓库的WordPress 主题或插件的更新,你所要做的只要在主题或插件的相关文件添加类似的代码:
GitHub Theme URI: afragen/test-child GitHub Theme URI: https://github.com/afragen/test-child or GitHub Plugin URI: afragen/github-updater GitHub Plugin URI: https://github.com/afragen/github-updater
Theme-Updater
跟上面的插件差不多,不过单单适合于主题,你额外要做的是添加类似下面的代码:
Github Theme URI: https://github.com/username/repo
后记
看完本文后你可能会发现有些标题党的味道,因为本文更多是介绍“插件”的升级。哎哎我必须承认之,因为就目前Jeff 收集到的资料都是倾向于插件的。
老外也开发过不少projects 可以实现自托管(selfhost)的第三方主题/插件(免费或商业)实现类似WordPress 官方的升级机制。但这不是本文的讨论范围。
顺便一提:Jeff 开发的主题的自动更新机制不是采用上面某个的,也不是采用在国内wp圈子广为转载的某种通过json直链文件那种。至于是什么,当然是机密~
- Javascript对象的方法赋值
- CentOS挂载硬盘
- 使用jQuery UI的draggable和droppable完成拖拽功能--介绍
- Angular企业级开发(6)-使用Gulp构建和打包前端项目
- CSS魔法堂:重拾Border之——解构Border
- Angular企业级开发(7)-MVC之控制器
- Angular企业级开发(8)-控制器的作用域
- 使用jQuery Draggable和Droppable实现拖拽功能
- CSS魔法堂:重拾Border之——图片作边框
- Mobile Web中URL设计问题
- 使用root用户连接Ubuntu16.04时,提示SSH连接被拒绝
- CSS魔法堂:Box-Shadow没那么简单啦:)
- java操作redis: 将string、list、map、自定义的对象保存到redis中
- 运行第一个Docker容器-Docker for Web Developers(1)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c++之对组pair
- c++STL容器之set/multiset容器
- c++STL容器之list容器
- c++STL容器之deque容器
- Web自动化必会「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
- HTML5 meta viewport参数详解
- 二分查找应该都会,那么二分查找的变体呢?
- TypeScript 实战算法系列(三):实现链表与变相链表
- JavaScript 测试系列实战(一):使用 Jest 和 Enzyme 测试 React 组件
- TypeScript 实战算法系列(二):实现队列与双端队列
- VBA位操作
- VBA编写Ribbon Custom UI编辑器07——写入xml
- Linux下在文件夹所有文件中查找相关内容
- archlinux安装篇(一) 基本系统
- git使用要点