Intereting Posts
Как выполнить запрос в WordPress, который показывает алфавитные сообщения? переместить некоторые файлы плагина в корневой каталог сайта с помощью активации плагина Как обслуживать файлы активов (js, css, images) на субдомене Shortcode для поиска и замены URL-адреса Как получить только определенное количество изображений из сообщения (за вычетом выделенного изображения)? Галерея внутри одного сообщения Автоматическое создание пользовательских страниц для новых пользователей Загрузка шаблона сообщения, содержащего вложенный цикл с ajax Крючок для плагина для вставки в мета-вход Должен ли я вставлять ссылки CDN в файл JS или использовать плагин Bootstrap CDN? Как я могу скрыть термин категории для сообщений без каких-либо заданий? Создание пользовательского типа PDF-файла (например, Media), а затем добавление пользовательских полей для поиска Включить подстановочный шаблон в WordPress Multisite (поддомены) Cron Job не работает в плагине проблема date_query

Как вы регистрируете пользователя с помощью wp_logout?

Я могу заставить wp_logout работать, но не без создания большого количества предупреждений («Предупреждение PHP: невозможно изменить информацию заголовка – уже отправленные заголовки»).

wp_logout вызывает wp_clear_auth_cookie , который вызывает setcookie , и файлы cookie должны идти с заголовками HTTP. Я wp_logout внутри страницы (в wp_logout или нижнем колонтитуле), следовательно, проблема.

Итак, как именно я хочу программно вывести пользователя из системы? Я мог бы сделать это в ответ на запрос ajax, но это похоже на верх. Благодарю.

РЕДАКТИРОВАТЬ

Текущий код выглядит следующим образом:

 add_action('wp_footer', 'fp_onload_php2'); function fp_onload_php2() { $slug = basename(get_permalink()); if($slug != 'club-login') return; $jsmsg = ''; $loggedin = false; if(is_user_logged_in()) { $current_user = wp_get_current_user(); $loggedin = $current_user->has_cap('customer'); } if($loggedin && isset($_GET['logout'])) { wp_logout(); $jsmsg = 'You have been logged out.'; $loggedin = false; } else if(!$loggedin && isset($_GET['logout'])) $jsmsg = "You are not logged in."; if(!$loggedin) echo "<script type='text/javascript'> fp_onload_js2(0, '" . $jsmsg . "'); </script>\n"; else echo "<script type='text/javascript'> fp_onload_js2(1, '" . $jsmsg . "'); </script>\n"; } // fp_onload_php2() 

Solutions Collecting From Web of "Как вы регистрируете пользователя с помощью wp_logout?"

Если вы используете wp_logout в своем собственном коде, его, вероятно, лучше всего exit или wp_redirect сразу после этого.

Вы можете вызвать wp_set_current_user(0) после wp_logout() чтобы вручную вручную wp_logout() пользователя, если вам нужно продолжить выполнение PHP, но не хотите, чтобы пользователь вошел в систему.

Это не здорово, но, похоже, работает. Это не так просто, как вызов wp_logout перед отправкой любого содержимого, поскольку пользователь может или не может быть выведен из системы до загрузки остальной страницы (я этого не понимаю). В моем случае содержание страницы зависит от того, действительно ли пользователь зарегистрирован (изменения меню и некоторый код JS вызывается для отображения контента по-разному).

для этого кода запрос выхода из системы перенаправляется на страницу входа, с параметром GET logout=1 . Это проверено на странице входа, которая затем вызывает wp_logout и перенаправляет обратно на страницу входа с параметром GET logout=0 , чтобы принудительно обновить.

 add_action('init', 'check_logout'); function check_logout() { if(!isset($_GET['logout']) || ($_GET['logout'] != '1')) return; // get_permalink() and $post are not available here, so: $path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); if($path != "/login/") return; if(is_user_logged_in()) { wp_logout(); header("Location: http://fubar.com/login/?logout=0"); exit(); } } // check_logout()