如何使Wordpress主题成为自动更新检查的一部分。我知道你可以插入插件自动更新程序,添加/删除自动更新程序中的插件,但你如何使用主题做这个?
我尝试了挖掘Twenty Ten主题,但没有任何代码可以定义它如何自动更新,或将其注册为自动更新。然而,它使用Wordpress自动更新。
非常感谢任何帮助。
编辑:应该已经指定,我的主题不在Wordpress存储库中。它将单独分发。
答案 0 :(得分:2)
挂钩pre_set_site_transient_update_themes
答案 1 :(得分:1)
由于您的主题不在Wordpress存储库中,因此一种简单的方法是在主题中合并文件访问权限。快速执行此操作的方法:
version = 1.1
设计主题以打开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';
}
}
您需要获取该代码,对其进行优化,并考虑文件权限以及最适合性能的内容。
答案 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
Google可以帮助您找到其他解决方案和教程。
请记住,您开发的任何解决方案都应具有安全性,以免使您的服务器遭受黑客攻击,尤其是因为您要在服务器上公开API时。这就是我将商业解决方案作为众多可用解决方案之一的原因。
答案 4 :(得分:-1)
WooCommerce有这个商业插件和主题更新API管理器,如果插件或主题不在wordpress.org上托管,则可以使用。它旨在为自托管插件和主题提供更新。
http://www.toddlahman.com/shop/wordpress-automatic-update-api-manager/