Tôi đang tạo một walker tùy chỉnh cho menu nav của tôi. Mục tiêu là chia menu thành các cột như vậy:
Tôi có thể dễ dàng xác định vị trí của mình trong danh sách bằng cách nhìn vào $item->menu_order
. Những gì tôi không biết là có bao nhiêu món trong tổng số menu.
Làm thế nào tôi có thể tìm ra điều đó từ bên trong xe tập đi?
Cập nhật:
Tôi nhận ra có một số cách khác để tạo cột. Tất cả đều có nhược điểm của họ, tuy nhiên:
Phao CSS. Như được đề xuất dưới đây bởi @sagive, điều này có thể được thực hiện bằng cách thả nổi tất cả các thành phần danh sách. Vấn đề là danh sách thay đổi thứ tự. Thay vì đi xuống cột đầu tiên, sau đó kết thúc sang cột thứ hai, danh sách sẽ đi qua tất cả bốn cột trên hàng đầu tiên, sau đó qua tất cả bốn cột trong hàng thứ hai. Điều này làm rối trật tự.
Cột CSS. Đây gần như là giải pháp hoàn hảo. Nó sẽ cho tôi chính xác những gì tôi muốn - ngoại trừ IE hoàn toàn không có. Ngay cả trên IE 9. Điều đó làm cho nó không thể sử dụng được cho một trang web chính thống.
jQuery. Với một số javascript phía máy khách, tôi có thể hack danh sách và sắp xếp nó theo cách tôi muốn. Mặc dù điều đó rất lộn xộn và nó phá vỡ đối với những người bị khuyết tật js.
PHP. Đây là phương pháp tôi đang hỏi về câu hỏi này. Tôi chia danh sách thành bốn danh sách không có thứ tự riêng biệt, kết xuất từng danh sách trong html, sau đó sử dụng CSS để thả danh sách để tạo bốn cột riêng biệt. Nó có thể khó sản xuất trong PHP, nhưng kết quả trông giống nhau cho tất cả các trình duyệt. Điều đó làm cho nó là lựa chọn tốt nhất tôi tin.
Giải pháp:
Đối với những người có thể theo dõi, đây là mã tôi cuối cùng đã sử dụng để có câu trả lời:
// 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;