Gezinmemi 3 tek gezinme çubuğuna (düzey 1, düzey 2 ve düzey3 +) ayırmaya çalışıyorum. Üçü, sitenin üzerinde ayrıldığından ve yalnızca geçerli sayfaya bağlı olarak görünmeleri gerektiği için.
-0-------1--------2-------3+- level/depth
Home
|
|\___ Lobby
|
|\___ Projects
| |\___ Project A
| | |\___ Review
| | |\___ Comments
| | \____ Download
| \____ Project B
| |\___ Review
| |\___ Comments
| \____ Download
|\___ Blog
|
\____ About
|\___ Legal
\____ Contact
Seviye 1'i içeren ilk gezinme çubuğu her zaman görülebilir. İkinci gezinme çubuğu (düzey 2) yalnızca şu anda ilgili üst sayfada olduğumda. Aynı şey üçüncü gezinme çubuğu için de geçerlidir (seviye 3+, artı bu gezinme çubuğu ayrıca 3. sayfa alt sayfaları ve alt sayfalar içerecektir).
Kısacası: Tüm üst menüleri gezinme çubuklarında ve yalnızca geçerli sayfanın doğrudan alt öğelerinde görüntülemek istiyorum.
Ne denedim:
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;
}
Bunu header.php dosyamda çağırıyorum:
<?php my_nav_menu( array( 'echo' => false , 'navlevel' => 1 ) ); ?>
Ancak $args
varsayılan değerlere ayarlanır ve özel navlevel
girişim filtrede gösterilmez.
Navbar'ımı açıklandığı gibi nasıl bölebilirim? Özel $args
girişimi nasıl ayarlarım?