ユーザーがログインしているかどうかを検出するためのスニペットがあります - 「いいえ」の場合は「アカウント」と「ログアウト」のリンクがトップメニューに表示されます。ログインしたユーザーを返すためにadd_filterが動作しない
ユーザーが「私を覚えてください」オプションを選択してログインすると、ログアウトせずに自分のウェブサイトを閉じて戻ってくるまでうまくいきます。
「ログイン」は、「アカウント」と「ログアウト」ではなく、トップメニューに表示されます。それは正常に動作しません、それをクリックした後、ユーザーはログインページにリダイレクトされず、代わりに "マイアカウント"と "ログアウト"が即座に表示されます。また、カートに何かを追加すると、「アカウント」と「ログアウト」が表示されます。
var_dump()によって、is_user_logged_(in)が「ログイン」をクリックするか、カートに何かを追加するまで何も返されないことを確認しました。私は優先順位を1または9999に変更しようとしましたが、それは助けになりませんでした。
// Add login & logout buttons to secondary menu.
add_filter('wp_nav_menu_items', 'add_loginout_link', 10, 2);
function add_loginout_link($items, $args) {
if (is_user_logged_in() && $args->theme_location == 'secondary') {
$items .= '<li><a href="'. get_permalink(woocommerce_get_page_id('myaccount')) . '">My account</a></li>
<li><a href="'. wp_logout_url(get_permalink(woocommerce_get_page_id('myaccount'))) . '">Logout</a></li>';
}
elseif (!is_user_logged_in() && $args->theme_location == 'secondary') {
$items .= '<li><a href="' . get_permalink(woocommerce_get_page_id('myaccount')) . '">Login</a></li>';
}
return $items;
}