我正在尝试在一个可以被其他插件使用的wordpress插件中创建一个钩子.首先,这甚至可能吗?我还发送了一些额外的args,所以这可能是2个问题,因为我一直无法找到关于如何做到这一点的确切信息.
这是我到目前为止所尝试的:
do_action('plugin1_hook',$customArg1,$customArg2,$customArg3);
在我希望钩子发射的那一刻.然后,在另一个插件(插件2)中,我添加了:
add_action('plugin1_hook','my_function');
和
function my_function($customArg1,$customArg3) { //my code }
但是,这似乎并未触发该功能.
我对此的反驳是wordpress钩子comment_post,它由wordpress定义为:
do_action('comment_post',$comment_ID,$commentdata['comment_approved']);
我用的是:
add_action('comment_post','my_comment'); function my_comment($comment_id) { //my code }
以上代码段正常运行.
我想我会发布这个作为答案,因为它更清楚一点来解释:)
原文链接:https://www.f2er.com/php/136192.html当您挂钩函数但未指定参数个数时,wordpress将始终传回一个参数.
你不会因此而得到错误;
function do_my_hook($arg1,$arg2 = '',$arg3 = '') {} add_action('my_hook','do_my_hook');
但你会这样做的;
function do_my_hook($arg1,$arg2,$arg3) {} add_action('my_hook','do_my_hook');
wordpress试图调用do_my_hook(),但它只传回一个参数.第一个示例使用PHP default function arguments,因此您可以在不传递所有可用参数的情况下调用函数,但没有错误.
第二个示例将触发’missing arguments(s)’PHP错误,因为所有三个参数都是必需的.
修复?
add_action('my_hook','do_my_hook',10,3);