Intereting Posts
Могу ли я запустить второй сайт wordpress в качестве субдомена без использования многосайта? Как сохранить значения настраиваемого поля ввода на экране «Сеть»> «Информация о сайте» Функция в алфавитном порядке сортирует пользовательские типы сообщений, создавая дубликаты Как я могу переписать URL-адреса для передачи таксономии и значений типа сообщения в запрос? Два цикла на странице Как предотвратить доступ к wp-admin для определенных ролей пользователей? Как использовать один репозиторий git (github) для управления версиями для нескольких тем WordPress 3.2 – удалена возможность выбора шаблона страницы в атрибутах страницы при добавлении новой страницы? Ломающаяся сетка бутстрапа при количестве сообщений с налоговыми условиями Медленная meta_query с записью около 4 milion на wp_postmeta add_shortcode не работает Является ли WordPress написанным в шаблоне MVC? Пользовательский плагин Retina для WP wp_reset_postdata () или wp_reset_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()