可以禁用父主题的功能吗?

时间:2013-04-14 作者:Bram Vanroy

我想知道是否有可能完全禁用在父主题中调用的函数functions.php 如果是,怎么做?(当然没有删除函数。而是通过向functions.php 子主题的。)

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

只有在某些情况下。

如果父主题的函数包装在function_exists 然后你应该能够替换它们。例如:

// Parent
if (!function_exists(\'p_wpse_95799\')) {
  function p_wpse_95799() {
    // 
  }
}
如果子主题定义了一个名为p_wpse_95799 则不会使用父函数。如果这是一种可能性,您只需要定义一个不做任何事情的函数,就像上面所说的那样。

如果函数“挂接”到某个筛选器或操作,则可以取消挂接。有一个陷阱。儿童主题functions.php 首先加载,这意味着您可能无法remove filters 直接地你必须钩住它们才能追上父母的functions.php 已运行。否则,您将尝试删除尚未添加的内容。抄本:"It is also worth noting that you may need to prioritise the removal of the filter to a hook that occurs after the filter is added. You cannot successfully remove the filter before it has been added." 大多数情况下,这将意味着找到一个跟踪父对象的钩子functions.php 挂接到那个,可能操纵add_actionadd_filter 导致函数运行延迟。

这些就是我现在能想到的情况。也许我忘了一个案子。我相信有人会指出,如果我有:)

没有PHP级别的“remove function”,如果您尝试用相同的名称定义两个函数,您将得到一个错误。

由于我看不到您要删除的函数的代码,我担心您可能会通过删除或修改它来破坏某些东西。要小心谨慎。

SO网友:Jared Sulzdorf

虽然在看不到代码的情况下很难准确地知道如何做自己想做的事情,但这可能有助于-How to override parent functions in child themes?

忽略该问题的覆盖部分;A如果您对更改函数不感兴趣,请关注如何删除它。

基本上,您希望在子主题的function.php 文件,并在设置主题后运行它。

结束

相关推荐

向php代码添加自定义文本行

下面的代码用于拉入我的推文,并在我的Wordpress网站上以个人博客帖子的形式发布。我想在推特后添加一个“在推特上关注我的链接”,当它显示在帖子的主体中时。我该怎么做?例如,它希望它看起来像:标题-截断的推文正文-全部推特发布推文-在推特上关注我(带链接)这是代码。任何帮助都会很棒。<?php function Keyring_Twitter_Importer() { class Keyring_Twitter_Importer extends Keyring_