向所有用户添加用户元数据

时间:2020-02-26 作者:Carlen

我不确定我在这里做错了什么。我正在尝试在注册时自动将此元数据添加到每个新用户。

    function add_to_group($user_id, $meta_key, $meta_value ) {
    $userid = get_current_user_id();
    return update_user_meta( $userid, \'learndash_group_users_6597\', \'6597\' );
}


     add_action( ‘user_register’, ‘add_to_group’, 10, 1 );
任何帮助都将不胜感激。

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

问题是你正在使用get_current_user_id();. 这有两个不正确的原因:

创建的用户不一定是当前用户。例如,如果管理员手动创建用户

  • user_register 在创建用户后但在用户登录之前立即运行。那么什么时候user_register 为在前端注册的用户运行,没有当前用户
  • 如果要向正在创建的用户添加meta,则在创建meta时,需要使用$user_id 传递给回调函数的变量。此用户ID用于创建的用户,无论他们是否是当前登录的用户。

    function add_to_group( $user_id ) {
        update_user_meta( $user_id, \'learndash_group_users_6597\', \'6597\' );
    }
    add_action( \'user_register\', \'add_to_group\' );
    
    请注意$user_id 传递给add_to_group 是我们正在使用的update_user_meta().

    此外,在原始代码中,您接受了函数的3个参数。我删除了它们,因为正如你从the documentation 对于挂钩,只有1个变量,$user_id 传递给回调。

    相关推荐