加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – WordPress中跨插件的自定义挂钩

发布时间:2020-12-13 13:04:14 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试在一个可以被其他插件使用的Wordpress插件中创建一个钩子.首先,这甚至可能吗?我还发送了一些额外的args,所以这可能是2个问题,因为我一直无法找到关于如何做到这一点的确切信息. 这是我到目前为止所尝试的: 在创建钩子的插件中(称之为插件1)我添
我正在尝试在一个可以被其他插件使用的Wordpress插件中创建一个钩子.首先,这甚至可能吗?我还发送了一些额外的args,所以这可能是2个问题,因为我一直无法找到关于如何做到这一点的确切信息.

这是我到目前为止所尝试的:

在创建钩子的插件中(称之为插件1)我添加了:

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 }

以上代码段正常运行.

我想我会发布这个作为答案,因为它更清楚一点来解释:)

当您挂钩函数但未指定参数个数时,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);

定义函数所使用的参数数量背后的想法是避免像这样的错误(尽管从技术上讲,它们使用默认参数很容易避免!).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读