Intereting Posts
Добавить код css в admin_enqueue_scripts Помощь с функцией WordPress внутри короткого кода Поиск крюка для добавления вложений информации на вкладку медиабиблиотеки Импортировать сообщение WordPress Post Slash с помощью прямого слэш Правильный синтаксис для получения настраиваемого поля в CPT Ссылка по умолчанию для TinyMCE «Добавить ссылку» Отображать различное количество сообщений из одной категории на разных страницах file.php не загружен? Разрешить анонимные комментарии, но предотвратить спам Виджет для панели управления CSS Плюсы и минусы использования Backbone для тематики WordPress Meta_Query отказывается возвращать результаты Тип пользовательского сообщения WordPress Повторение 404 ошибок Как подключиться к WordPress для сохранения загруженной фотографии в качестве альтернативного размера существующей фотографии? Захват таксономических терминов и вставка их в массив

Вызов wp_signon не регистрирует пользователя в

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

Чтобы это произошло, я использую wp_signon (), чтобы подписать пользователя, если они еще не вошли. Вот упрощенная версия того, что я делаю:

<?php define('WP_USE_THEMES', false); require("wp-blog-header.php"); if(!is_user_logged_in() && $_POST["log"] == "") { //redirect to login form that submits to this PHP script exit(0); } if(!is_user_logged_in() && $_POST["log"] != "") { $creds = array('user_login' => $_POST["log"], 'user_password' => $_POST['pwd'], 'remember' => $_POST["rememberme"]); $user_info = wp_signon($creds, false); if(!is_a($user_info, 'WP_Error')) { $username = $_POST["log"]; wp_set_current_user($user->ID, $username); wp_set_auth_cookie($user->ID, true, false); do_action('wp_login', $username); } else { write_log(ERROR, "Error authenticating: " . $user_info->get_error_message($user_info->get_error_code())); } $user_info = wp_get_current_user(); /* Code from here uses user attributes to generate and encrypt a single sign-on token */ ?> 

Проблема, с которой я столкнулся, заключается в том, что даже после вызова wp_signon() , wp_set_current_user() , wp_set_auth_cookie() и действий входа, пользователь все еще не вошел в систему. Я получаю свой объект $ user_info, но они не вошли в систему WordPress, поэтому позже, когда они следуют за защищенной ссылкой из системы поддержки, они не могут попасть на страницу и снова войти в систему (таким образом, побеждая цель единого входа).

Кроме того, я попытался заменить весь wp_signon() на auth_redirect() и который успешно регистрирует пользователя на сайте, но я нахожу, что они перенаправляются на страницу профиля, даже если URL имеет параметр запроса чтобы перенаправить их обратно на мой скрипт.

Solutions Collecting From Web of "Вызов wp_signon не регистрирует пользователя в"

Вы должны убедиться, что ваш код выполняется до auth_redirect() .

setup_theme простыми словами, вам нужно перехватить всю функцию, используя действие setup_theme . Это сработало в моем случае.