我能否重新声明一个已经存在的函数,使用相同的名称但是不同的代码?或者以某种方式“禁用”旧函数?
我想重新定义一个核心的WordPress函数,但由于插件和主题经常调用该函数,因此我需要保持相同的函数名称。
我能否重新声明一个已经存在的函数,使用相同的名称但是不同的代码?或者以某种方式“禁用”旧函数?
我想重新定义一个核心的WordPress函数,但由于插件和主题经常调用该函数,因此我需要保持相同的函数名称。
add_filter()
函数覆盖您正在使用的函数。function function_name() {
//code goes here
}
$hook = 'get_options'; // the function name you're filtering
add_filter( $hook, 'function_name' );
使用Codex可以很好地解决这个问题。
apply_filter
的代码。其他任何东西都无法操作。因此,此解决方案取决于原始代码首先利用过滤器。尽管越来越多的WordPress代码(包括插件)都在这样做,但并非所有代码都适合这种方法。不幸的是。仍然+1指出它。 - 0xC0000022L <?php
if(!function_exists('function_name')){
//old definition here
} ?>
如果需要回滚到原始状态,您可以在保留原始状态的同时重新定义它。
根据更改的复杂程度和重复次数,如果您使用的是PHP 5,还可以考虑使用命名空间。
只需注释掉旧函数并编写新函数即可 ;)
在PHP中,本地无法重新定义或重载(即使用不同参数定义具有相同名称但不同参数的函数)。但是,有一些扩展可以重新定义函数(runkit_function_redefine
),例如runkit,但您可能不想使用这些扩展(这些扩展很少安装且大多不可靠)。
我想尝试做的解决方案是这样的:
function suffusion_get_image($options = array()) {
include_once ABSPATH.'wp-content/themes/suffusion-child/functions/media.php';
return childtheme_overide_suffusion_get_image($options = array());
....
}