Intereting Posts
WP 4.4 – сопоставление доменов для сайтов в многопользовательской сети? Как перенаправить после входа в систему, рабочий путь? Paginate_links в настраиваемом шаблоне типа сообщения Проблема с флажком с пользовательской опциональной страницей Детский раздел с раздвижными дверями Отображение слайдера на главной странице (главная страница) с помощью темы Customizr Rewrite Rule для многоязычного веб-сайта, например qTranslate? Использование nonce в пользовательской форме входа в систему Рекомендации по доступу к текущим пользовательским данным в WordPress meta_query не позволяет показывать сообщения при запросе нескольких аргументов в WP_Query Показать описание CPT на страницах archive.php для всех CPT Изменить путь к изображениям, возвращаемым get_the_content () Добавить страницу, которая появляется в бэкэнд-админе, в котором перечислены файлы для загрузки? WP 3.3 Изменение содержимого перед записью в базу данных Условные теги для уровней членства при использовании плагина для членов списка пожеланий?

wp_authenticate, но не вошел в систему

Я довольно новичок во всех вещах WordPress и, похоже, очень смущен тем, что я прочитал.

То, что я делаю, это создать плагин для определенного задания, и мне нужно просто изменить меню после входа в систему. Теперь я использую DIVI 2 как тему, и у меня это есть в функции. Php плагина:

function my_wp_nav_menu_args( $args = '' ) { if( is_user_logged_in() ) { $args['menu'] = 'UserMenu'; } else { $args['menu'] = 'MainMenu'; } return $args; } add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' ); 

Кажется, что это имеет смысл, но не работает, и я не уверен, что это Divi2 или, как проверено несколько раз, пользователь не вошел в систему. Он продолжает возвращаться как false is_user_logged_in() .

Вот код, который я использую для пользовательского входа:

 <?php /** * Created by PhpStorm. * User: Andrew * Date: 08/11/2017 * Time: 11:21 */ global $wpdb; $userOK = -1; print_r(is_user_logged_in()); if(is_user_logged_in()) { //This does not action, ever! ?> <script> window.location.href = "https://URL.uk/userhome/"; </script> <?php } if($_POST['wd_resendActivationButton'] === 'resend') { sendActivation($_POST['userid'], $_POST['useremail'],"2"); } if($_POST['loginEmail'] && $_POST['loginPassword'] && !$_POST['wd_resendActivationButton']){ $userOK = 0; $user = wp_authenticate( $_POST['loginEmail'] , $_POST['loginPassword'] ); if(is_wp_error($user)) { echo $user->get_error_message(); } else { if($user->user_status === "0") { wp_logout(); } else { ?> <script> window.location.href = "https://url.uk/userhome/"; </script> <?php } } } 

Как я понял, wp_authenticate также зарегистрировал пользователя, но, похоже, этого не делает. Поэтому не уверен, где проблема. Может ли кто-нибудь указать мне правильное направление?

ОБНОВИТЬ

Используя приведенный ниже код, ясно, что wp_authentication не работает, хотя он дает мне пользовательский объект, он не регистрирует пользователя в:

  if($_POST['loginEmail'] && $_POST['loginPassword'] && !$_POST['wd_resendActivationButton']){ $userOK = 0; $user = wp_authenticate( $_POST['loginEmail'] , $_POST['loginPassword'] ); if(is_wp_error($user)) { echo $user->get_error_message(); } else { if($user->user_status === "0") { wp_logout(); } else { if(is_user_logged_in()) { ?> <script> console.log('logged in'); window.location.href = "https://URL.uk/userhome/"; </script> <?php } else { ?> <script> console.log('Not logged in'); window.location.href = "https://URL.uk/"; </script> <?php } } } } 

благодаря

Addy

Solutions Collecting From Web of "wp_authenticate, но не вошел в систему"

Мне удалось выяснить, что вызвало это. Но мне показалось странным, что на нем есть такая небольшая информация. В любом случае, я надеюсь, что это может помочь другим в будущем:

  if($_POST['loginEmail'] && $_POST['loginPassword'] && !$_POST['wd_resendActivationButton']){ $userOK = 0; $user = wp_authenticate_username_password(NULL, $_POST['loginEmail'] , $_POST['loginPassword'] ); wp_set_current_user($user->ID, $user->user_email); wp_set_auth_cookie($user->ID); do_action('wp_login', $user->user_email); if(is_wp_error($user)) { echo $user->get_error_message(); } else { if($user->user_status === "0") { wp_logout(); $userOK =1; } else { if(is_user_logged_in()) { $nonce = wp_create_nonce(); function my_wp_nav_menu_args( $args = '' ) { if ( is_user_logged_in() ) { $args['menu'] = 'UserMenu'; } return $args; } add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' ); ?> <script> console.log('logged in'); window.location.href = "https://URL.uk/userhome?loggedin=true&_wpnonce=<?php echo $nonce; ?>"; </script> <?php } else { ?> <script> console.log('Not logged in'); window.location.href = "https://URL.uk/"; </script> <?php } } } } 

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

  add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' ); 

Не уверен, что такое стандартная практика. Но это работает.

Благодарю.