【发布时间】:2013-02-21 10:04:26
【问题描述】:
WordPress CMS 的正常安装包含数百个脚本、插件和主题。该概念允许通过简单地创建脚本副本并将更改后的版本放在正确的目录中来替换脚本。 但是,安装新版本的脚本或插件时,不会更新复制的脚本。在一个脚本中通常有数百个函数。更改一个功能的代价是其他功能也将不再更新。 在许多情况下,Wordpress 钩子和过滤器足以添加或抑制特定功能,但并非总是如此。
我正在寻找一种方法来重新声明或重载函数,以便在安装更新时原始脚本可以被 CMS 替换。我试过这个:
rename_function( 'wp_function' , 'old_wp_funtion )
function wp_function(){
// things to do before the function
$a = $b;
// call the old function
$result = old_wp_function();
// things to do afterwards
$b = $c;
return $result;
}
但它不起作用。 此外,使用 Wordpress,您永远不知道要考虑的参数类型和数量。重载的函数也必须处理这个问题。
我的问题是:我该如何做才能让它在所有情况下都能正常工作,并且可以使用任何数量和任何类型的参数。 并且无需对原始函数/脚本进行任何更改,因为它们可能(而且必须)被 Wordpress 更新覆盖。
【问题讨论】:
-
我不知道 php 或任何其他语言中有任何
doesn't work错误。顺便说一句,你有错字(关闭'在'old_wp_funtion之后丢失)。 -
而且 php 还支持namespaces,这是处理函数名称不明确时的常用方法。
-
我认为您需要更详细地研究您要通过此实现的目标。不管是什么,这听起来都是错误的方法。
标签: php wordpress overloading redeclare