WordPress 主题自动更新的实现和注意事项

今天朋友使用了一款 WordPress 主题,但是在使用的过程中出现了一些错误,经过我的调查后发现是主题自动更新出了毛病。修复了问题之后,觉得这个自动更新的实现颇有价值,写出来分享给大家,另外将这个错误出现的原因解释一下,引以为戒。

简介

ThemeUpdateChecker 是一个开源 PHP 库,遵守 GPL 许可,用于实现主题的升级提示和自动更新。使用这个支持库可以创造出和官方主题升级一样的效果,从而使开发者实现和官方升级相同的操作体验。
theme_update_checker_pic1

详情可以参看作者文章:Automatic Updates For Private And Commercial Themes

 

下载地址

库文件(需要 WordPress 3.2 及以上版本,测试至 4.2.2)

主题示例

标识文件示例

 

如何部署

1.将支持库文件 theme-update-checker.php 复制到主题根目录的 update 文件夹中,文件目录格式为 wp-content/themes/mytheme/update/theme-update-checker.php

2.打开主题的 funtions.php 文件,在 <?php 内添加如下代码

3.创建标识文件,按照提示填写内容,保存为 info.json ,样例如下

然后将 info.json 上传到你的网站目录中,文件必须保证能够公开访问。

到这里,自动更新程序已经添加好了。

 

推送更新

打开正在使用主题的 style.css 文件,头部会有主题信息如下

程序是将主题的开发者留下的标识文件和主题样式 style.css 里面的版本号进行比对,如果主题开发者的 info.json 文件里面的版本号比使用者的主题文件 style.css 里面的版本号大,那么就会在 WordPress 后台的更新工具进行更新提醒,如果你选择更新,就自动在线安装主题。

所以我们只需要更新 info.json 中的相关信息,即可实现推送更新。

theme_update_checker_pic2

 

注意事项

在我为朋友博客 Debug 的过程中,我发现了一个问题,这个问题如果不处理好,会导致无法更新,或者不断重复提示更新/无限提示更新。

最最重要的一点就是保持主题名称的一致。在这个实例中,我们需要保持以下的主题名称必须一致,而且不能忽略大小写——

theme_update_checker_pic3
错误的目录名导致错误

 

  • style.css 中标识的主题名称
  • 文件目录中主题所在文件夹的名称(这个很容易被忽略)
  • functions.php 中引用库的代码中的名称
  • info.json 中的主题名称

 

在这次我遇到的问题中,涉及到的主题是 Dimpurr 的作品 Clearision 主题,在默认安装主题之后默认的文件目录为 wp-content/themes/clearision ,使用的是小写的
clearision 但是实际上代码中全部都是 Clearision ,由于大小写不一样,无法正确获取当前主题的版本,才导致无限提示更新的错误。

尾巴

自动更新功能的引入可以给主题使用者更愉悦的体验,为用户免去了多次下载的麻烦。同时,自动更新功能可以通过引入开关机制,让用户选择是否启用,因为主题更新会全部覆盖主题文件,如果使用者在主题中进行了修改,都会被覆盖。

另外我推荐也引入 functions-diy.php 文件避免对用户修改的覆盖。 [xieyan]

6 条评论

昵称
  1. kuyus

    路过~混个脸熟。

  2. QQ532327258

    博客不错,嘎嘎!

  3. 蒂欧娜

    我就是随便看看!

  4. 增达信购

    虚心学习!!

  5. 2929148200

    年中快乐!

  6. 1217347194

    看看您的博客!