我有一个插件,因为我需要更改一些文本,但是这个函数没有钩子可以使用。
通常使用remove_action()
或remove_filter()
覆盖该功能。对于这两个函数,我们需要覆盖过滤器名称。但是这个插件功能不会添加任何过滤器。
现在我需要覆盖这个功能。
例如
插件中的Plugin.php
function plugin(){
echo 'hello';
echo 'welcome you';
}
主题中的Function.php
我想将plugin.php中的函数plugin()转换为
function theme_plugin(){
echo 'hello';
echo 'You are welcome';
}
add_action
没有plugin()
。
如何覆盖plugin()
到theme_plugin()
?
答案 0 :(得分:2)
看这里Redefining PHP function?,你不能覆盖php功能或超载它。你必须找到解决问题的另一种方法。
此致
答案 1 :(得分:0)
如果我是对的,您可以使用以下链接:http://sltaylor.co.uk/blog/customizing-new-user-email-pluggable-function/
****编辑**
我对wordpress没有多少经验。但是有人要求同样的事:Overriding a theme function from plugin in WordPress
明确的答案是:
除非该函数被覆盖,否则不行。这是基本的PHP。您无法重新定义函数。如果你尝试,你会得到一个致命的错误。
写入部分WordPress被覆盖。看看/wp-includes/pluggable.php。其中的每个函数都包含在if(!function_exists(...))条件中。除非你的主题做同样的事情,有些功能也做了,否则你不能覆盖。
查找可能对您有所帮助的过滤器。
查看您的代码,您应该可以解开它。只要确保将钩子钩得足够晚。这不是一个好的解决方案,但是因为你破坏了主题功能,而且还必须知道主题正在使用的所有钩子函数的名称。
$ fragment中是否存在某些内容,或$ _POST或$ _GET或其他任何内容,您可以使用它来有条件地运行代码,其余部分单独使用。
无论如何,Wordpress是开源的,所以你可以自己更改代码吗?为什么只更改插件?