Wordpress存储库上没有托管自动更新主题

时间:2011-05-12 03:20:30

标签: wordpress themes auto-update

如何使Wordpress主题成为自动更新检查的一部分。我知道你可以插入插件自动更新程序,添加/删除自动更新程序中的插件,但你如何使用主题做这个?

我尝试了挖掘Twenty Ten主题,但没有任何代码可以定义它如何自动更新,或将其注册为自动更新。然而,它使用Wordpress自动更新。

非常感谢任何帮助。

编辑:应该已经指定,我的主题不在Wordpress存储库中。它将单独分发。

5 个答案:

答案 0 :(得分:2)

挂钩pre_set_site_transient_update_themes

答案 1 :(得分:1)

由于您的主题不在Wordpress存储库中,因此一种简单的方法是在主题中合并文件访问权限。快速执行此操作的方法:

  1. 将版本控制合并到主题中的主文件中。创建一个“version.php”文件,其中包含version = 1.1
  2. 之类的PHP变量
  3. 创建一个目录,您的主题文件将托管在您自己的网站上。在该目录中创建一个“version.txt”文件,该文件仅包含最新版本号(即:1.2),不包含其他文本或数字。该URL可能类似于domain.com/repository/version.txt。
  4. 设计主题以打开domain.com/repository/version.txt的内容,并使用PHP比较每个主题的编号。如果有更新版本,请以ZIP格式下载最新版本的主题。

    $version = floatval(file_get_contents('domain.com/repository/version.txt')); // note use only 1 decimal to keep it simple and prevent floatval() from failing

    if($version > $localversion) {
    copy("domain.com/repository/version".$version.".zip","theme/tmp/version_temp.zip");
    $zip = new ZipArchive;
    $res = $zip->open("theme/tmp/version_temp.zip");
    if ($res === TRUE) {
    $zip->extractTo("theme");
    $zip->close(); echo 'ok';
    } else {
    echo 'failed'; } }

  5. 您需要获取该代码,对其进行优化,并考虑文件权限以及最适合性能的内容。

答案 2 :(得分:0)

更新API分为三个部分:核心,插件和主题。所有这些都托管在wp.org上,只是在WP存储库中存在插件/主题,它会自动更新,而不需要超出标准插件/主题标题和readme.txt文件的代码行。

答案 3 :(得分:0)

wordpress.org具有侦听插件/主题更新请求的API。客户端是本地WordPress安装,它将这些请求发送到WordPress.org,然后等待答复。本地WordPress安装默认使用wordpress.org,但远程API可以是任何自定义URL,例如example.com。

如果您的本地WordPress安装在example.com上,则将需要一个自定义插件,该插件将构建为充当API,以侦听来自其他位置(甚至安装在同一位置)的插件/主题的HTTP更新请求服务器。

要使插件/主题将API请求发送到例如example.com而不是wordpress.org的服务器,则需要构建客户端软件(例如客户端类)才能将API请求发送到example .com,并且当客户端收到HTTP(s)响应时,它将挂接到两个过滤器之一中:

pre_set_site_transient_update_plugins

pre_set_site_transient_update_themes

一个过滤器钩用于插件,一个过滤器钩用于主题。这些不是WordPress中可用的唯一挂钩。

总而言之,需要为主题插件构建客户端库,以将HTTP请求发送到位于服务器上的API(例如example.com)。还必须在服务器上(例如在example.com上)构建并安装插件,以使API侦听客户端HTTP请求。

可以根据需要自定义客户端和服务器上的HTTP请求,但是需要花费一些时间来开发解决方案。有免费的商业解决方案可以满足您的即时需求,或者您可以使用其中一种解决方案来创建自己的自定义解决方案。

这是请求和响应流:

client ->(HTTP(s)) request)-> server(API)
server(API) ->(HTTP(s)) response)-> client

这里有两个解决方案作为示例:

(免费)wp-update-server from YahnisElsts

(商业)WooCommerce API Manager

Google可以帮助您找到其他解决方案和教程。

请记住,您开发的任何解决方案都应具有安全性,以免使您的服务器遭受黑客攻击,尤其是因为您要在服务器上公开API时。这就是我将商业解决方案作为众多可用解决方案之一的原因。

答案 4 :(得分:-1)

WooCommerce有这个商业插件和主题更新API管理器,如果插件或主题不在wordpress.org上托管,则可以使用。它旨在为自托管插件和主题提供更新。

http://www.toddlahman.com/shop/wordpress-automatic-update-api-manager/