“不需要”功能

时间:2015-04-20 08:43:11

标签: javascript php html wordpress

我的WP主题的父function.php有

require get_template_directory() . '/inc/template-tags.php';

在该文件中是我想要更改的函数。问题是那里有许多其他功能,我不想触及。我可以将整个文件复制到子主题中,并取消注册/取消该文件。我想知道是否有更简单的方法。

在template-tags.php中,我想要更改值的函数叫做

function web2feel_content_nav( $nav_id ) {

...内容我想在这里改变

endif; // web2feel_content_nav

使用

在我的single.php文件中调用它
<?php web2feel_content_nav( 'nav-below' ); ?>

只是更改父文件很容易,但我不想触摸父文件,所以我只想覆盖那个函数并将其更改为新的/固定的。

1 个答案:

答案 0 :(得分:1)

您无法删除功能,也无法重新声明它们,因为这会导致致命错误。

很遗憾,您还没有提供有关问题的更多背景信息,因此我无法为您提供准确的解决方案。基于此,这个问题有三个解决方案

解决方案1 ​​

这是最快速,最简单的解决方案,但基于父主题的功能应该包含在以下条件中这一事实

if ( !function_exists( 'NAME_OF_FUNCTION' ) )

如果是这种情况,您可以简单地将父函数复制到您的子主题,而不使用条件语句,进行更改并继续使用。这是唯一一次可以重新声明与上述条件相同的函数首先检查子主题中是否存在具有相同名称的函数,如果存在,则只是忽略并跳过父函数

解决方案2

这也非常快速和简单,并依赖于过滤器。如果父主题已构建过滤器,则可以通过提供的过滤器简单地更改功能。在您的子主题中,您可以简单地创建一个函数来更改过滤器,然后将其挂钩到相应的过滤器以更改函数的输出

解决方案3

这是努力解决方案,其中满足上述条件。这是您最后也是唯一的度假胜地。

你应该做的是

  • 将要修改的父功能复制到您的子主题,并将重命名该功能复制到适合您的任何唯一名称

  • 根据需要修改此功能并确保安全

  • 您现在需要将受影响的模板复制到您的子主题single.php

  • 在这些模板中,您需要将新功能的所有实例替换为新创建的功能并保护它们

Wordpress现在将在您的子主题(在您的情况下为子single.php)而不是父模板中加载模板。这将确保页面加载了新的修改函数