以前小编在帮可以开发 WordPress 主题的时候经常会遇到客户问主题什么时候会更新、升级。其实小编最头痛这类问题了,因为小编也不知道什么时候会更新主题,而且也不好叫客户实时关注主题的更新动态所以小编一时也回答不上。想让 WordPress 自动提示主题有更新吧,又要把主题提交到 WordPress 官网才可以实现在线提示更新的功能,但是收费主题又不好直接提交到 WordPress 官网,前一阵子看到老外写的一篇文章:Automatic Updates For Private And Commercial Themes 说的就是如何为商业 WordPress 模板添加一个在线升级与版本更新提示。
一、创建一个带有 WordPress 主题版本信息的 info.json 文件并放入主题根目录:
{ "version" : "2.0", "details_url" : "https://www.weixiaoduo.com/wpjiaocheng/201310314.html", "download_url" : "https://www.weixiaoduo.com/wpjiaocheng/201310314.zip" }
二、在网站根目录下新建一个 themes-updates.json 文件:
{ "version" : "2.0", "details_url" : "https://www.weixiaoduo.com/wpjiaocheng/201310314.html", "download_url" : "https://www.weixiaoduo.com/wpjiaocheng/201310314.zip" }
参数说明下:
version:后面的那个 2.0 就是你主题的版本,比如你第一次发布出去的时候你可以写为 1.0; details_url:后面的参数就是你现在这个主题的详细页面,一般你发布主题的时候都是有个详细的页面来介绍这个主题吧?那就填那个主题详细页的 URL 地址; download_url: 后面的参数就是你发布主题下载的那个链接地址,也就是说用户要是能找你这个地址的话,直接复制到浏览器就可以下载,这个参数是可选的,你可以留空,不过要 是留空的话就不能增加类似官网的那个点击之后自动更新的功能了。你每次有新的功能更新的话只需要修改 version 后面的参数后,使用你主题的用户就可以 看到新的提醒了。
三、给你的主题添加远程检测是否有新版本发布的功能
将下载的文件解压,把里面的 theme-updates 文件夹放到主题根目录,然后给主题文件 functions.php 添加以下代码:
//初始化更新检测. require 'theme-updates/theme-update-checker.php'; $example_update_checker = new ThemeUpdateChecker( 'example-theme', 'https://www.weixiaoduo.com/themes-updates.json' );
说明下: example-theme 主题的名称,也就是在主题文件夹 (/wp-content/themes) 下面的名字,比如安装你主题后的文件路径是/wp-content /themes/my-theme/,那么,第一个参数就不再是 xample-theme 而是 my-theme 了。
到此,你的主题就支持自动更新的功能了,只要用户在使用你的主题,系统就会没 12 小时自动检查一次的。
补充: 大概的说下 theme-update-checker.php 类
1. 初始化函数:__construct(『主题名字』,' 主题参数的 URL 地址』,' 是否自动更新,默认是』)
2. 检测是否有更新的函数的函数:checkForUpdates()
这个可以手动的调用
3. 从主题参数的 URL 地址获取主题的信息:requestUpdate()
4. 删除主题储存信息:deleteStoredData()
这个函数对你的主题有安装和卸载功能的,在安装和卸载的代码时候可以调用下。