Tôi cố gắng chia điều hướng của mình thành 3 thanh điều hướng đơn (cấp 1, cấp 2 và cấp 3 +). Ba vì chúng được phân tách trên trang web và chúng chỉ xuất hiện tùy thuộc vào trang hiện tại.
-0-------1--------2-------3+- level/depth
Home
|
|\___ Lobby
|
|\___ Projects
| |\___ Project A
| | |\___ Review
| | |\___ Comments
| | \____ Download
| \____ Project B
| |\___ Review
| |\___ Comments
| \____ Download
|\___ Blog
|
\____ About
|\___ Legal
\____ Contact
Thanh điều hướng đầu tiên chứa cấp 1 luôn hiển thị. Thanh điều hướng thứ hai (cấp 2) chỉ khi tôi hiện đang ở trang cha tương ứng. Điều tương tự cũng xảy ra với thanh điều hướng thứ ba (cấp 3+, cộng với vì thanh điều hướng này cũng sẽ chứa các trang phụ và trang phụ ... của cấp 3).
Tóm lại: Tôi muốn hiển thị tất cả các menu cha trong các nút điều hướng của chúng và chỉ các phần tử con trực tiếp của trang hiện tại.
Những gì tôi đã cố gắng:
function my_nav_menu( $args = array() )
{
$echo = isset( $args['echo'] ) ? (bool)( $args['echo'] ) : true;
$args['echo'] = false;
add_filter( 'wp_get_nav_menu_items' , 'my_nav_menu_filter' , 666 , 3 );
$menu = wp_nav_menu( $args );
remove_filter( 'wp_nav_menu_objects' , 'my_nav_menu_filter' , 666 );
if( $echo )
echo $menu;
else
return $menu;
}
function my_nav_menu_filter( $items , $menu , $args )
{
//var_dump( $args );
$navLevel = isset( $args['navlevel'] ) ? (int)( $args['navlevel'] ) : 0;
//echo 'navlevel = ' . $args['navlevel'] . ' | ' . $navLevel;
if( $navLevel == 1 )
{
foreach( $items as $key => $item )
{
if( $item->menu_item_parent != 0 )
unset( $items[$key] );
}
}
else if( $navLevel == 2 )
{
foreach( $items as $key => $item )
{
if( $item->menu_item_parent != 0 )
{
$page = get_page( $item->menu_item_parent );
if( $page->menu_item_parent == 0 )
continue;
}
unset( $items[$key] );
}
}
else if( $navLevel == 3 )
{
foreach( $items as $key => $item )
{
if( $item->menu_item_parent != 0 )
{
$page = get_page( $item->menu_item_parent );
if( $page->menu_item_parent != 0 )
continue;
}
unset( $items[$key] );
}
}
else
{
//var_dump( $items );
}
return $items;
}
Gọi cái này trong tiêu đề.php của tôi:
<?php my_nav_menu( array( 'echo' => false , 'navlevel' => 1 ) ); ?>
Tuy nhiên, $args
được đặt thành các giá trị mặc định và mục nhập tùy chỉnh của tôi navlevel
không được hiển thị trong bộ lọc.
Làm thế nào tôi có thể chia thanh điều hướng của tôi như mô tả? Làm cách nào để đặt tùy chỉnh $args
?