javascript - "Un-require"一个函数

标签 javascript php html wordpress

我的WP主题的父functions.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' ); ?>

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

最佳答案

您不能删除函数,也不能重新声明它们,因为这将导致 fatal error 。

不幸的是,您没有提供有关您的问题的更多背景信息,因此我无法为您提供确切的解决方案。基于此,针对该问题提出了三种解决方案

解决方案 1

这是最快、最简单的解决方案,但基于以下事实:父主题的函数应包装在以下条件中

if ( !function_exists( 'NAME_OF_FUNCTION' ) )

如果是这种情况,您只需将父函数按原样复制到子主题中,无需条件语句,进行更改即可开始。这是唯一一次可以重新声明与上述条件相同的函数,首先检查子主题中是否存在同名函数,如果存在,则简单地忽略并跳过父函数

解决方案2

这也非常快速和简单,并且依赖于过滤器。如果父主题具有内置过滤器,您可以通过提供的过滤器简单地更改功能。在您的子主题中,您可以简单地创建一个函数来更改过滤器,然后将其 Hook 到适当的过滤器以更改函数的输出

解决方案 3

这是不满足上述条件的努力解决方案。这是你最后也是唯一的手段。

你应该在这里做的是

  • 将要修改的父函数复制到您的子主题,然后将该函数重命名为适合您的任何唯一名称

  • 根据需要修改此函数并保护它

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

  • 在这些模板中,您需要用新创建的函数替换旧函数的所有实例并保护它们

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

关于javascript - "Un-require"一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743018/

相关文章:

javascript - WinJS xhr可以发出HTTPS请求吗?

javascript - 定义选项卡的 CSS 规则

php - "Hour:Minute"与两个 "Hour:Minute"字符串的差异

php - 与 URL 混合时未传递 GET 变量

javascript - AngularJS 在绑定(bind)之外转义 HTML

javascript - 如何在另一个函数中获取firebase生成的行数据

JavaScript innerHTML 几秒钟

php - 值(value)比较未按预期进行

php - 重定向ajax请求

html - 如何测量特定字体大小的特定字体的文本大小