WordPress добавляет роль пользователя с $ ultimatemember - PullRequest
1 голос
/ 21 февраля 2020

Я создаю пользователя WordPress, как это:

$userdata = array(
        'user_login' =>  $login,
        'user_pass'  =>  $pass,
        'user_email' => $mail,
    );
    $user_id = wp_insert_user($userdata);

, и я хочу добавить роль пользователя, используя Ultimate Member, как это:

 global $ultimatemember;
    um_fetch_user($user_id);
    $ultimatemember->user->set_role('role-slug');

Но когда я делаю это вот так, у меня ошибка

Uncaught Error: Call to a member function set_role() on null

Я пробовал ранее с строкой 'role' => 'role_slug' в пользовательских данных, но она не работает: (*

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Надеюсь, это поможет вам

$userdata = array(
        'user_login' =>  $login,
        'user_pass'  =>  $pass,
        'user_email' => $mail,
    );
$user_id = wp_insert_user($userdata);


$wp_user_object = new WP_User($user_id );
$wp_user_object->set_role('editor');
0 голосов
/ 21 февраля 2020

То, что вы делаете, в основном так:
https://docs.ultimatemember.com/article/32-change-user-community-role

Что правильно, , если вы установили плагин конечного участника


Может произойти сбой, поскольку предоставленный $user_id не является действительным идентификатором пользователя.

wp_insert_user вернет либо int (идентификатор для пользователя), либо WP_Error: https://developer.wordpress.org/reference/functions/wp_insert_user/

Читайте WP_Error: https://developer.wordpress.org/reference/classes/wp_error/


Если wp_insert_user возвращает ошибку, может быть много причин:

  • Передача неверного адреса электронной почты.
  • Адрес электронной почты уже занят другим пользователем.
  • Другие плагины добавили ограничения на надежность пароля, или любое другое требование .

С помощью filter_var мы можем проверить, является ли электронная почта действительной:
https://www.php.net/manual/en/function.filter-var.php

И с is_wp_error мы можем проверьте, если wp_insert_user возвращает WP_Error:
https://developer.wordpress.org/reference/functions/is_wp_error/

С помощью этих функций мы можем найти и избежать проблемы:

// check if email is valid
if( false === filter_var($mail, FILTER_VALIDATE_EMAIL) ){
    echo 'The email is invalid';
    return;
}


$userdata = [
    'user_login' =>  $login,
    'user_pass'  =>  $pass,
    'user_email' =>  $mail,
];

$user_id = wp_insert_user($userdata);

// check if error occurred
if( is_wp_error($user_id) ){
    echo $user_id->get_error_message(); // <-- this should reveal the cause of the issue
    return; 
}



global $ultimatemember;
um_fetch_user($user_id);

$ultimatemember->user->set_role('role-slug');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...