Add User Role: Pre-saved in User-Meta [SOLVED]

Question

I am adding an action after user registration to add another user role based off the users meta_value.
When I use:

add_action('um_after_save_registration_details', 'custom_after_new_user_register', 10, 2);

function custom_after_new_user_register($user_id) {

$user = get_user_by('id', $user_id);
if (!in_array('subscriber', $user->roles)) {
    $user->add_role(editor);
    
  }}

It successfully adds the role ‘editor’, however, I seem to fail to extract the saved user_meta and make it work dynamically.

Below is what I got to but it’s not working

add_action('um_after_save_registration_details', 'custom_after_new_user_register', 10, 2);

function custom_after_new_user_register($user_id) {

$user = get_user_by('id', $user_id);
$get_portal_number = get_user_meta($user_id, 'portal_number', false);
if (!in_array('subscriber', $user->roles)) {
    $user->add_role($get_portal_number);
    
  }}

SOLVED:

$get_portal_number = get_user_meta($user_id, 'meta_key', false); 

will return an array and value needs to be a single value, hence it must be set to

$get_portal_number = get_user_meta($user_id, 'meta_key', true);

Alternatively, you can use:

$get_portal_number = get_user_meta($user_id, 'meta_key', false)[0];

if you need to set false in a different case.

Thanks to NightHawk for solving this.

0
, , , , Ali Hamdan 3 years 2020-08-20T18:10:43-05:00 0 Answers 49 views 0

Leave an answer

Browse
Browse