2011-04-29 98 views
0

我試圖在使用wp_nav_menu功能WP 3.1.X來實現的,就是有,如菜單:顯示子類別欄中選擇父類別時

-- Category 1 
-- Category 2 
-- Category 3 
-- Category 4 
-- Category 5 
-- Category 6 

但是當你在「類別2」上顯示爲:

-- Category 1 
-- Category 2 
    -- Sub Category 1 
    -- Sub Category 2 
    -- Sub Category 3 
-- Category 3 
-- Category 4 
-- Category 5 
-- Category 6 

PS。我不尋找CSS隱藏/顯示功能,可以輕鬆實現。

PPS。是否可以爲此擴展Walker_Nav_Menu類?

+0

如果您使用的是'wp_nav_menu',則應該在* Admin - > Appearance - > Menus *中預建整個導航。你是否正在建立導航菜單? – 2011-04-29 00:39:06

+0

我不希望子類別在默認情況下顯示,僅當用戶位於適用類別 – Stoosh 2011-04-29 00:51:30

+0

只需要清楚,不可接受的解決方案就是打印所有類別的所有子類別和非當前類別子類別是隱藏的?如果這不起作用,我認爲你可以用'wp_nav_menu'完成這個。相反,我認爲你必須編寫一個函數,首先查看父項的內容,然後生成菜單並僅顯示當前父項的子類別。 – tollmanz 2011-04-29 02:00:01

回答

3

如果您繼承Walker_Nav_Menu類,則可以覆蓋display_element函數,並有條件地刪除項目的子項,然後再循環。

if (!$element->current && !$element->current_item_ancestor && isset($children_elements[$id])) { 
    unset($children_elements[ $id ]); 
} 

這將刪除不是當前的任何項目的孩子,所以你需要檢查的項目的類型,如果你只是想爲類別做到這一點。完整的步行器看起來是這樣的:https://gist.github.com/954627

+0

感謝您的洞察力,我沒有意識到Walker類中的display_element方法。我會稍後再做,並讓你知道結果 – Stoosh 2011-05-04 02:25:56

+0

天才!工作得很好,我可以修改以獲得它我想要的!謝謝。 – Stoosh 2011-05-04 06:26:32

相關問題