Логаут-функция в WordPress использует одноразовые токены для безопасности (которые носят название nonce), поэтому если вы попытаетесь перейти по адресу yoursite.com/wp-login.php?action=logout, то вам будет выведена на экран страница с подтверждением выхода из системы.
Это не слишком удобно, но, к счастью, есть способ избежать появления этой страницы.
С помощью функции wp_logout_url в сочетании с wp_nav_menu_items мы можем добавить ссылку на логаут в любое меню, причем пользователю не придется подтверждать, что он действительно хочет выйти из системы, поскольку функция автоматически добавляет одноразовый токен к ссылке.
// ссылка на логаут в меню function diww_menu_logout_link( $nav, $args ) { $logoutlink = '<li><a href="'.wp_logout_url().'">Logout</a></li>'; if( $args->menu->term_id == '5' ) { return $nav.$logoutlink ; } else { return $nav; } } add_filter('wp_nav_menu_items','diww_menu_logout_link', 10, 2);
Все, что вам понадобится – это изменить ID меню (в данном случае 5). Если вы не знаете ID вашего меню, но знаете theme_location вашего меню, в таком случае воспользуйтесь следующей функцией:
// ссылка на логаут в меню function diww_menu_logout_link( $nav, $args ) { $logoutlink = '<li><a href="'.wp_logout_url().'">Logout</a></li>'; if( $args->theme_location == 'primary' ) { return $nav.$logoutlink ; } else { return $nav; } } add_filter('wp_nav_menu_items','diww_menu_logout_link', 10, 2);
Вы можете также указать, на какую страницу будет переноситься пользователь после логаута. Измените $logoutlink на следующее:
$logoutlink = '<li><a href="'.wp_logout_url( home_url() ).'">Logout</a></li>'; // перенаправление на главную $logoutlink = '<li><a href="'.wp_logout_url( get_permalink() ).'">Logout</a></li>'; // оставаться на той же странице $logoutlink = '<li><a href="'.wp_logout_url( 'http://www.doitwithwp.com/about/' ).'">Logout</a></li>'; // переход к определенному URL
Источник: doitwithwp.com
Третий код, вторая строка.
Вместо get_permalink() надо использовать
Имеем (полностью код не пишу):
.wp_logout_url( get_permalink() ).
Получим:
.wp_logout_url( $current_page ).
Перед этой строкой обязательно надо прописать получение текущего URL:
$current_page = $_SERVER[‘REQUEST_URI’];
Спасибо за замечание. Пусть будет в комментариях, пока кто-нибудь не проверит.