如何重写可插拔函数

时间:2012-06-26 作者:frank13

如何重写pluggable中的函数。php?

我已经尝试制作自己的插件——在已经定义的函数上出现了致命错误。

我尝试了函数。php在我的主题中——得到了白色屏幕。

是否可以覆盖可插拔的。php函数而不触及源代码文件本身?

谢谢

Here is the function I wish to override (located in ../wp-includes/pluggable.php):

if ( !function_exists(\'wp_new_user_notification\') ) :
/**
 * Notify the blog admin of a new user, normally via email.
 *
 * @since 2.0
 *
 * @param int $user_id User ID
 * @param string $plaintext_pass Optional. The user\'s plaintext password
 */
function wp_new_user_notification($user_id, $plaintext_pass = \'\') {
...
}

2 个回复
最合适的回答,由SO网友:Milo 整理而成

用一个function_exists 检查:

if( ! function_exists(\'some_pluggable_function\') ) {
    function some_pluggable_function()
    }
}

SO网友:EAMann

中重写函数的正确方法pluggable.php 就是在插件中重新定义相同的函数。插件的功能将覆盖pluggable.php 由于WP 1被包装在对function_exists().

但请确保只执行一次。从…起the Codex:

Note: 一个函数只能以这种方式重新分配一次,因此不能安装两个插件,因为不同的原因插入同一个函数。为了安全起见,最好始终使用if ( !function_exists() ), 否则,您将在插件激活时产生致命错误。

从您所描述的情况来看,似乎不止一个插件试图重写同一个函数。

结束

相关推荐

Beta Versioning of Plugins

当我为一些bug编写修复程序时,我通常会增加版本并将其发送给bug查找程序,以查看我的修复程序是否有效。如果我有1.2.5 我想创建一个测试版,一旦我提交代码,它将变得多余,我应该使用1.2.5-beta 或1.2.6-beta? 我担心的是1.2.6 <;1.2.6-beta 因此,字符串比较可能有利于beta版,而bug查找程序不会收到发布稳定版本的通知。编辑:如果在不考虑发布类型的情况下对字符串进行绝对比较,则可以使用1.2.5-fix 然后1.2.6. 该问题也概述在http://en.wik