发送到自定义函数的参数太少

时间:2020-02-22 作者:wharfdale

我在前端有一个按钮,它将通过AJAX触发一个函数来跟踪另一个用户。当流程完成/成功时,它将运行最后一个函数,即do_action.

尽管手动传递静态值,但仍返回以下错误:

函数sa\\u post\\u follow\\u user\\u callback()的参数太少,传递了1个

我显然通过了两次:

do_action( \'sa_post_follow_user\', 1, 16 );
以下是ajax运行的部分代码:

if ( $followed ) {

  do_action( \'sa_post_follow_user\', 1, 16 );

  return true;
}
Theadd_action:

function sa_post_follow_user_callback( $user_id, $user_to_follow ) {

    // Get user data from follower and followee.
    $followee_user_data = get_userdata( $user_to_follow );
    $follower_user_data = get_userdata( $user_id );

    // Compile user data into array to pass to function.
    $data = [
        \'followee_username\' => $followee_user_data->user_login,
        \'followee_email\'    => $followee_user_data->user_email,
        \'follower_username\' => $follower_user_data->user_login,
        \'follower_profile_link\' => get_home_url() . \'/user/\' . $follower_user_data->user_login,
    ];

    // Send email
    send_follow_email( $data );

}
add_action( \'sa_post_follow_user\', \'sa_post_follow_user_callback\' );
错误:

PHP致命错误:Uncaught ArgumentCounter错误:函数sa\\u post\\u follow\\u user\\u callback()的参数太少,传入/srv/www/$

Stack trace:
#0 sa_post_follow_user_callback(1)
#1 WP_Hook->apply_filters(\'\', Array)
#2 WP_Hook->do_action(Array)
#3 do_action(\'sa_post_follow_...\', 1, 16)
#4 sa_follow_user(1, 17)

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

您的函数需要2个参数,但您没有向add_action

add_action( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

https://developer.wordpress.org/reference/functions/add_action/

通过只传递要添加的标记和函数,PHP使用了优先级和接受参数的默认值,即优先级为10,接受参数为1。但是1!=2.

因此,要解决此问题,需要指定accepted arguments参数

相关推荐

初学者问题:通过管理Web界面访问Functions.php以导入自定义帖子类型?

是否可以访问这些功能。php文件仅仅使用管理web界面?我正在尝试访问以前创建的(手动编码的)自定义帖子类型,我不得不跳过很多障碍,因为我无法访问函数中的代码。php文件。我已经浏览了很多帮助页面,但建议的步骤似乎总是涉及到函数。php文件(我无法访问)或使用插件中的导入/导出工具,该插件首先创建了自定义帖子类型(据我所知,没有使用任何插件)。这似乎是一个非常基本的问题,但我一辈子都想不出来。任何帮助都将不胜感激!