首页 > 解决方案 > WordPress:如何根据另一个高级自定义字段设置特定角色

问题描述

我正在开发一个 WordPress 应用程序,我们通过高级自定义字段插件添加了一个自定义字段。

这运作良好!

我们需要根据我们通过高级自定义字段插件添加的注册密码来设置一个特定的角色。

我们尝试在function wp_insert_user( $userdata ) {方法内更新 users.php 中的代码,但失败了。

这是我们尝试设置的代码:

debug_to_console('hey cindyyyyyyyyyyyyyy');
    debug_to_console($userdata);
    if ( isset( $userdata['role'] ) ) {
        $user->set_role( $userdata['role'] );
    } elseif ( ! $update ) {
        if ($userdata['registration_pin'] == 9742)
        {
            $user->set_role('club_member');
        }
        else if ($userdata['registration_pin'] == 9744) {
            $user->set_role('new_member');
        }
        else{
            $user->set_role( get_option( 'default_role' ) );
        }
        //$user->set_role( get_option( 'default_role' ) );
        //      $user->set_role('new_member');
        //  $user->set_role('club_member');
    }

在此代码中,它传递了 2 个 if 语句并直接转到设置“默认角色”的 else。

标签: wordpress

解决方案


它通过这两个“if 语句”的唯一方法是因为 $userdata['registration_pin'] 不等于 9742 或 9744,或者 $userdata['registration_pin'] 不存在于 $userdata

我确定问题是 $userdata['registration_pin'] 不存在,ACF 不会像这样在您的用户数据中保存自定义字段...默认情况下,来自 ACF 的自定义字段保存在 user_meta 表中

您应该能够通过以下方式访问注册密钥:

$registration_key = get_user_meta($user_id, 'registration_key', true);

推荐阅读