如何在更新WordPress核心或主题的同时仍能使用我的子主题挂钩

时间:2013-08-16 作者:John Doe

我根据WordPress Twenty12主题制作了一个子主题(即WordPress“Twenty12”主题是其父主题)。

一些修改非常简单,只需覆盖样式,在子主题的样式中使用我自己的css属性和选择器。css文件(如#page div的不同属性值或其他)。

其他修改由hooks完成,在子主题的函数中引入了我自己的函数。php文件,然后通过将代码放置在子主题的(最初重复的)头中来调用它们。php,页脚。php或任何地方。例如,我通过在子主题的函数中编写一个新函数,在每个页面中添加了一个额外的div。php,它只是回显html,然后将对该函数的调用插入子主题的头副本中的适当位置。php。

我知道,这很简单。作为一个新手,我对我得到的结果感到非常满意——父母的“Twenty12”主题被这些孩子的主题修改成了看起来完全不同的东西,这正是我想要的。我觉得我可以把《二十一世纪》的主题转换成各种不同的风格。

到目前为止还不错。但现在我面临WordPress更新的问题。当我将WordPress更新到一个新版本,甚至只是将“Twentyle2”主题更新到一个新版本时,挂钩(我放在子主题的header.php或footer.php中,或任何地方)可能无法工作,因为父主题的代码结构可能会发生根本性的改变。(我意识到,至少在一段时间内,大部分内容可能不会真正改变基本内容,但有一天可能会改变,或者我可能会试图修改可能更容易改变的代码。)

那我该怎么办?我想把我所做的所有修改都列一个详尽的清单。这样,当我需要更新时,我必须检查列表上的每个项目,并检查新文件,看看我的修改是否像以前一样有效。但这可能非常耗时,而且容易出错。

那么,有没有更好的方法来修改所有这些子主题,并更新WordPress核心文件和主题,而不需要太多麻烦呢?

我想我正在寻找一些机制,可以更容易地检查修改挂钩在子主题的标题中是否仍然有效。php或页脚。php或任何地方,当我更新WordPress时,或者这使我不必做这样的检查。当然,如果我有这些权利的话!

我的印象是,“创世”框架就是这样做的——我说得对吗?如果是,它是如何做到的?但是为什么我要买一个主题呢?我对WP的“二十一二”主题所做的修改对我来说非常有效;如果可能的话,我想继续修改这个主题。我能把《创世纪》和《二十一世纪》主题结合起来吗?

2 个回复
SO网友:JMau

子主题的概念就是让您的修改在更新时保持不变。您使用子主题进行维护。但它必须是同一个主题。我是说,212和213不是同一个主题。

所以基本上,当主题更新时,您不必做任何事情。关于WP文件更新,它不应该改变任何东西,除非你已经入侵了核心,这是不推荐的。

SO网友:Ben Miller - Remember Monica

的确,当你为其他人的软件编写主题或插件时,你依赖于该软件。每次更新后,基础软件都有可能发生变化,主题或插件中的某些内容将不再正常工作。

话虽如此,WordPress作为一个项目在尽可能保持向后兼容方面做得非常出色。WordPress很少在添加了钩子之后删除钩子,当WordPress想要删除一个函数时,他们会首先反对该函数,在实际删除之前向开发人员提供多个版本的警告。由于《十二个主题》也是由WordPress项目编写的,因此您可以期望在那里对细节给予同样的关注。

插件或主题开发人员需要使用每个新版本的WordPress测试其代码。由于您是自己的主题开发人员,这就落在您的肩上。熟悉debug process. 通过在测试期间打开WP\\u DEBUG常量,将警告您正在使用的任何已弃用且有被删除危险的函数。对于每个新版本的WordPress,请阅读codex article 这将提供更改的概述,并查找可能影响软件的任何内容。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴