wp_signon( $creds, false ); не работает

Вопрос или проблема

В моем мультисайте я использую специальную регистрацию блога с помощью:
wpmu_signup_blog($domain, $path, $blog_title, $user_name, $user_email, $meta);
и создание сайта проходит успешно.

Я хочу, чтобы пользователи автоматически входили в свою панель администратора сайта при регистрации, для этого я использую:

$creds = array();
$creds['user_login'] = $_POST['username'];
$creds['user_password'] = $_POST['password'];
$creds['remember'] = true;

$user = wp_signon( $creds, false );

if ( is_wp_error($user) )
   echo $user->get_error_message();

Но это возвращает ошибку:

ОШИБКА: Введенный пароль для имени пользователя mysite неверен. Забыли пароль?

Мне нужно автоматическое вход без использования плагина!!!

Пожалуйста, помогите…

Надеюсь, это поможет кому-то. После часов отладки я выяснил, что в настройках мультисайта wp_signon($creds, false) не будет вас авторизовывать. Так что вам следует делать одно из двух:

$user = wp_signon ($creds, false);
wp_set_auth_cookie($user->ID);

или

$user = wp_signon ($creds, true);

Поскольку вы входите в систему после успешного создания блога, переменная $_POST не будет содержать ожидаемых значений.

Используйте wp_set_auth_cookie( $user_id );, чтобы авторизовать пользователя, вам не нужно проверять учетные данные для входа в вашем случае.

Мне пришлось столкнуться с той же проблемой, но для кастомно созданных ролей. Присвоение им разрешения на чтение решило мою проблему.

Ответ или решение

Конечно! Вот подробное объяснение и решение проблемы с автоматической авторизацией пользователей в админ-панели сайта после регистрации в WordPress Multisite.

Проблема с wp_signon в мультисайте

Если у вас возникла ошибка при попытке автозалогиниться с помощью функции wp_signon( $creds, false );, это может быть связано с особенностями работы мультисайта в WordPress. Ваша текущая реализация возвращает ошибку вроде:

ERROR: The password you entered for the username mysite is incorrect. Lost your password?

Это может произойти из-за нескольких причин:

  1. Неверные учетные данные: Убедитесь, что передаваемые вами имя пользователя и пароль корректны, но так как вы создаете новую учетную запись, это вряд ли причина.
  2. Используйте wp_set_auth_cookie(): При создании нового сайта и пользователя в мультисайте не всегда требуется проверка учетных данных через wp_signon. Многие разработчики сталкиваются с этой проблемой, и вместо того, чтобы проверять логин и пароль, можно просто установить аутентификационный кукис.

Решение проблемы

Вот как вы можете изменить ваш код, чтобы избежать использования wp_signon и автоматически авторизовать нового пользователя:

  1. Сначала создайте сайт с помощью wpmu_signup_blog, как вы уже делаете.
  2. Затем используйте wp_set_auth_cookie() для авторизации пользователя.

Пример кода:

// Создание блога (ваш код)
$blog_id = wpmu_signup_blog($domain, $path, $blog_title, $user_name, $user_email, $meta);

if ( ! is_wp_error( $blog_id ) ) {
    // Получаем объект пользователя
    $user = get_user_by('login', $user_name);

    if ( $user ) {
        // Устанавливаем куки для авторизации
        wp_set_auth_cookie( $user->ID, true );
        // Дополнительно, вы можете перенаправлять пользователя на админ-панель
        wp_redirect( admin_url() );
        exit;
    }
} else {
    // Обработка ошибок создания блога
    echo $blog_id->get_error_message();
}

Примечания

  • Убедитесь, что у вашего нового пользователя есть все необходимые роли и права доступа. Если вы создаете пользователей с пользовательскими ролями, не забудьте назначить им необходимые возможности, такие как read, чтобы избежать проблем с доступом.
  • Если ваш пользователь все еще не может зайти, проверьте, что он существует в базе данных и что у него установлен корректный пароль.
  • Также вы можете использовать дополнительные функции для отладки, чтобы выяснить, что именно идет не так с аутентификацией.

Заключение

С помощью вышеописанного решения вы сможете автоматически авторизовать пользователей после успешного создания блога в мультисайте WordPress без использования дополнительных плагинов. Если у вас возникли дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...