2016-04-08 6 views
0

ユーザーがログインしているかどうかを検出するためのスニペットがあります - 「いいえ」の場合は「アカウント」と「ログアウト」のリンクがトップメニューに表示されます。ログインしたユーザーを返すために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; 
} 

答えて

0

このように動作するはずです。 2つのことが私の心に来ました。 プラグインがそれにうんざりしています。すべてのプラグインを無効にして、デフォルトのテーマに切り替えてみてください。それでも問題が解決しない場合は、creatign 2のメニューでフィルタなしでif(is_user_logged_in())に応じて正しいものを表示してください。

関連する問題