Rya*_*ins 8 php wordpress hook
我正在尝试在一个可以被其他插件使用的Wordpress插件中创建一个钩子.首先,这甚至可能吗?我还发送了一些额外的args,所以这可能是两个问题,因为我一直无法找到关于如何做到这一点的确切信息.
这是我到目前为止所尝试的:
在创建钩子的插件中(称之为插件1)我添加了:
do_action('plugin1_hook', $customArg1, $customArg2, $customArg3);
Run Code Online (Sandbox Code Playgroud)
在我希望钩子发射的那一刻.然后,在另一个插件(插件2)中,我添加了:
add_action('plugin1_hook', 'my_function');
Run Code Online (Sandbox Code Playgroud)
和
function my_function($customArg1, $customArg2, $customArg3) { //my code }
Run Code Online (Sandbox Code Playgroud)
但是,这似乎并没有解雇这个功能.我对此的反驳是Wordpress钩子comment_post,它由Wordpress定义为:
do_action('comment_post', $comment_ID, $commentdata['comment_approved']);
Run Code Online (Sandbox Code Playgroud)
我用的是:
add_action('comment_post', 'my_comment');
function my_comment($comment_id) { //my code }
Run Code Online (Sandbox Code Playgroud)
以上代码段正常运行.
我以为我会发布这个作为答案,因为它更清楚一点来解释:)
挂钩函数但不指定参数个数时,WordPress将始终传回一个参数.
你不会因此而得到错误;
function do_my_hook($arg1, $arg2 = '', $arg3 = '') {}
add_action('my_hook', 'do_my_hook');
Run Code Online (Sandbox Code Playgroud)
但你会这样做的;
function do_my_hook($arg1, $arg2, $arg3) {}
add_action('my_hook', 'do_my_hook');
Run Code Online (Sandbox Code Playgroud)
WordPress试图调用do_my_hook()
,但它只传回一个参数.第一个示例使用PHP默认函数参数,这样您就可以在不传递所有可用参数的情况下调用函数,但没有错误.
第二个示例将触发'missing arguments(s)'PHP错误,因为所有三个参数都是必需的.
修复?
add_action('my_hook', 'do_my_hook', 10, 3);
Run Code Online (Sandbox Code Playgroud)
定义函数所使用的参数数量背后的想法是避免像这样的错误(尽管从技术上讲,使用默认参数可以很容易地避免它们!).
归档时间: |
|
查看次数: |
3849 次 |
最近记录: |