답변:
이는 체크인중인 URL에 필요한 nonce가 없기 때문에 발생합니다. wp-login.php
case 'logout' :
check_admin_referer('log-out');
...
wp_logout_url
nonce를 포함하여 URL을 검색하기 위해 사용하십시오 . 맞춤 URL로 리디렉션하려면 간단히 인수로 전달하십시오.
<a href="<?php echo wp_logout_url('/redirect/url/goes/here') ?>">Log out</a>
wp_loginout
번역을 포함하여 링크를 생성하는을 사용할 수도 있습니다 .
echo wp_loginout('/redirect/url/goes/here')
wp_logout_url( get_permalink())
중이며 확인 페이지가 무시되지 않습니다. nonce는 URL의 일부로 생성되지만 여전히 확인 페이지로 보내집니다
wp_logout_url()
기능을 사용할 수없는 경우 다음 코드를 사용하여이 유효성 검사를 해제 할 수 있습니다.
add_action('check_admin_referer', 'logout_without_confirm', 10, 2);
function logout_without_confirm($action, $result)
{
/**
* Allow logout without confirmation
*/
if ($action == "log-out" && !isset($_GET['_wpnonce'])) {
$redirect_to = isset($_REQUEST['redirect_to']) ? $_REQUEST['redirect_to'] : 'url-you-want-to-redirect';
$location = str_replace('&', '&', wp_logout_url($redirect_to));
header("Location: $location");
die;
}
}
대체 'url-you-want-to-redirect'
당신이 로그 아웃 한 후 리디렉션 할 URL과 함께.
당신의에 추가 functions.php
메뉴에서 사용자 정의 링크를 작성하는 경우 레이블을 “Logout”
로 설정하고 URL을로 설정하십시오 http://yourdomain.com/wp-login.php?action=logout
. 그런 다음 functions.php
파일 에이 함수를 추가 하십시오.
function change_menu($items){
foreach($items as $item){
if( $item->title == "Logout"){
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' );
}
}
return $items;
}
add_filter('wp_nav_menu_objects', 'change_menu');
로그 아웃 후 로그인 페이지로 리디렉션하려면 다음과 같이 로그인 URL을 추가해야합니다.
$item->url = $item->url . "&_wpnonce=" . wp_create_nonce( 'log-out' ).'&redirect_to='.wp_login_url();