問題描述
我正在為我的導航菜單創建一個自定義步行者。目標是將菜單分成如下列:
我可以通過查看 $item->menu_order 來輕鬆確定我在列表中的哪個位置。我不知道的是菜單中有多少個項目。
我如何從 Walker 裏面看出來?
更新:
我知道有幾種其他方法可以創建列。所有這些都有自己的缺點,但是:
-
CSS 浮點數如下面的 @sagive 所示,這可以通過浮動所有列表元素來實現。問題是列表改變了順序。而不是下移第一列,然後將其包裝到第二列,該列表將跨越第一行的所有四列,然後跨第二行的所有四列。這弄亂了秩序。
-
CSS 列。這幾乎是完美的解決方案。它會給我正確的我想要的 – 除了 IE 不是它。即使在 IE 9. 這使得它不能用於主流網站。
-
jQuery 的。有一些 client-side javascript 我可以黑客列表,並使其佈局我想要的方式。這是凌亂的,而對於那些有殘疾人士的人而言,
-
PHP 。這是我問這個問題的方法。我將列表分成四個單獨的無序列表,每個都在 html 中轉儲,然後使用 CSS 來浮動列表以創建四個不同的列。在 PHP 中生產可能很棘手,但對於所有瀏覽器,結果看起來都一樣。這使得它成為我認為最好的選擇。
解:
對於那些可能跟隨的人來説,這裏是我終於得到答案的代碼:
// The menu handle from the register_nav_menu statement in functions.php
$theme_location = 'my-menu-handle';
$theme_locations = get_nav_menu_locations();
$menu_obj = get_term( $theme_locations[$theme_location], 'nav_menu' );
// Echo count of items in menu
echo $menu_obj->count;
最佳解決方案
調用 wp_get_nav_menu_object 獲取一個菜單對象,這將為您提供該菜單的項目數量。
例:
// Get menu object
$my_menu = wp_get_nav_menu_object( 'your-menu-name-or-slug' );
// Echo count of items in menu
echo $my_menu->count;
希望有幫助。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。
