gpt4 book ai didi

php - 跨插件的 WordPress 自定义 Hook

转载 作者:可可西里 更新时间:2023-11-01 12:36:41 24 4
gpt4 key购买 nike

我正在尝试在一个 Wordpress 插件中创建一个可以被其他插件使用的 Hook 。首先,这可能吗?我还发送了一些额外的参数,所以这可能是 2 个问题合二为一,因为我一直无法找到有关如何执行此操作的权威信息。

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

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

do_action('plugin1_hook', $customArg1, $customArg2, $customArg3);

在我想让钩子(Hook)开火的时候。然后,在另一个插件(插件 2)中,我添加了:

add_action('plugin1_hook', 'my_function');

function my_function($customArg1, $customArg2, $customArg3) { //my code }

然而,这似乎并没有触发该功能。我对此的引用是 Wordpress 钩子(Hook) 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 }

上面的代码片段运行正常。

最佳答案

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

当你 hook 一个函数,但没有指定参数的数量时,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 , 这样您就可以在不传递所有可用参数的情况下调用函数,但不会出错。

第二个示例将触发“缺少参数”PHP 错误,因为所有三个参数都是必需的。

修复?

add_action('my_hook', 'do_my_hook', 10, 3);

定义您的函数需要多少个参数背后的想法是避免此类错误(尽管从技术上讲,使用默认参数很容易避免这些错误!)。

关于php - 跨插件的 WordPress 自定义 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3111608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com