class="right"
属性を使用してプライマリナビゲーションメニューへのリンクを追加する方法を教えてください。
example.com/wp-logout.php?action=logout
に静的リンクを追加しようとしましたが、ログアウト確認ページが表示されます。ログアウトリンクにする方法はありますか?
wp_nav_menu_items
フックを使ってこれを達成することができます。 primary
メニューの場所にあるlogin/logoutリンクを示す次のコードを見てみましょう。
add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );
function wti_loginout_menu_link( $items, $args ) {
if ($args->theme_location == 'primary') {
if (is_user_logged_in()) {
$items .= '<li class="right"><a href="'. wp_logout_url() .'">'. __("Log Out") .'</a></li>';
} else {
$items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
}
}
return $items;
}
これが上記の例で実装したものです。
wp_nav_menu_items
フック用のフィルタを追加し、それに関数を添付しました。primary
テーマの場所を確認した後、ユーザーがログインしているかどうかを確認しました。Log Out
リンクを、そうでなければLog In
リンクを示しています。class="right"
を使用しています。この blog に詳しい説明があります。
私のフッターメニューは widget なので、Chittaranjanのコードを使うのは困難でした。次の編集版は私のために働きます。私はまたリンクを変更し、それらを「動的」にしました:ログインはあなたの選択のページに導く、ログアウトは現在のページに留まるか、現在のページがあなたの(私的)ログインページなら家に送ります。ログインページが実際に非公開かどうかを確認するのが理想的ですが、その方法がわかりません、申し訳ありません。
add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );
function wti_loginout_menu_link( $items, $args ) {
//var_dump($args);
if (($args->menu->slug == 'footer')) {
if (is_user_logged_in()) {
$loginlink = '/your-private-page';
$logoutlink = get_permalink();
if (strpos($logoutlink, $loginlink) !== false) {
$logoutlink = '/';
}
$items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Log Out") .'</a></li>';
} else {
$items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
}
}
return $items;
}