Tôi đang thực hiện walker tùy chỉnh đầu tiên của mình để xây dựng một menu accordion. Để bắt đầu, tôi đã sử dụng ví dụ này: http://bitacre.com/2025/custom-nav-menu-walker-for-wordpress-theme
Có hai chức năng. Đầu tiên start_lvl và sau đó start_el.
Trong start_el, ID được triển khai bởi $ item-> ID. Có ai biết làm thế nào tôi có thể làm điều này trong start_lvl không? Tôi cần cung cấp cho một (điều hướng cấp thấp hơn xung quanh) một ID để tôi có thể kích hoạt nó để thu gọn trong menu accordion.
Những gì tôi đang cố gắng tạo ra là một cái gì đó như thế này:
<a href="#collapse2">Titel 2</a>
<ul id="collapse2">Lower Level Menu 2</ul>
<a href="#collapse3">Titel 3</a>
<ul id="collapse3">Lower Level Menu 3</ul>
Mã của tôi cho hàm start_lvl:
// add id's and classes to ul sub-menus
function start_lvl( &$output, $depth, $item ) {
// depth dependent classes
$indent = ( $depth > 0 ? str_repeat( "\t", $depth ) : '' ); // code indent
$display_depth = ( $depth + 1); // because it counts the first submenu as 0
$pgid = ; // How to get ID in here??
$classes = array(
'sub-menu',
( $display_depth == 1 ? 'accordion-body collapse' : '' ),
( $display_depth % 2 ? 'menu-odd' : 'menu-even' ),
( $display_depth >=2 ? 'sub-sub-menu' : '' ),
'menu-depth-' . $display_depth
);
$ids = array(
'collapse' . $pgid
);
$class_names = implode( ' ', $classes );
$id_name = implode( ' ', $ids );
// build html
$output .= "\n" . $indent . '<ul id="' . $id_name . '" class="' . $class_names . '">' . "\n";
}