2016-04-08 52 views
0

我有一個代碼段來檢測用戶是否登錄 - 如果是,然後「我的帳戶」和「註銷」鏈接顯示在頂部菜單中,如果沒有,「登錄」鏈接顯示。add_filter不能用於返回登錄用戶

它工作正常,直到用戶登錄時選中「記住我」選項,離開我的網站而不註銷並返回。

然後在頂部菜單上顯示「登錄」,而不是「我的帳戶」和「註銷」。它不能正常運行,點擊後用戶不會重定向到登錄頁面,而是立即顯示「我的帳戶」和「註銷」。同時向購物車添加任何內容都會顯示「我的帳戶」和「註銷」。

我通過var_dump()檢查is_user_logged_(in)直到我點擊「Login」或添加一些東西到購物車後才返回任何東西。我試着將優先級改爲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我想到的東西。 插件搞砸了。嘗試禁用所有插件並切換到默認主題。如果仍然存在問題,則解決方法是通過創建2個菜單,並根據if(is_user_logged_in())...顯示正確的解決方案,而無需過濾。

相關問題