今ログアウトしたとき:
<a href="<?php bloginfo('url'); ?>/wp-login.php?action=logout">Log out</a>
ログアウトを確認する必要があるページにリダイレクトされます。
ログアウト後に確認を削除してホームページにリダイレクトする方法
これは、wp-login.php
でチェックインされているURLに必要なナンスがないために起こります。
case 'logout' :
check_admin_referer('log-out');
...
Nonceを含むURLを取得するためにwp_logout_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()
関数を使用できない場合は、次のコードを使用してこの検証を無効にすることができます。
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();