मैं अपने नेविगेशन को 3 सिंगल नेविगेशन बार (स्तर 1, स्तर 2 और स्तर 3 +) में विभाजित करने का प्रयास करता हूं। तीन क्योंकि वे साइट पर अलग हो गए हैं और उन्हें केवल वर्तमान पृष्ठ पर निर्भर होना चाहिए।
-0-------1--------2-------3+- level/depth
Home
|
|\___ Lobby
|
|\___ Projects
| |\___ Project A
| | |\___ Review
| | |\___ Comments
| | \____ Download
| \____ Project B
| |\___ Review
| |\___ Comments
| \____ Download
|\___ Blog
|
\____ About
|\___ Legal
\____ Contact
पहला नम्बर 1 स्तर वाला हमेशा दिखाई देता है। दूसरा नौबत (स्तर 2) केवल जब वर्तमान में इसी मूल पृष्ठ पर im। वही तीसरे नेवबार (स्तर 3+, प्लस के लिए जाता है क्योंकि इस नावबार में उप पृष्ठ और स्तर 3 के उप पृष्ठ ...) भी शामिल होंगे।
संक्षेप में: मैं सभी मूल मेनू को उनके नावबार और केवल वर्तमान पृष्ठ के प्रत्यक्ष बच्चों को प्रदर्शित करना चाहता हूं।
मैंने क्या कोशिश की:
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;
}
मेरे शीर्षलेख में इसे कॉल करना।
<?php my_nav_menu( array( 'echo' => false , 'navlevel' => 1 ) ); ?>
हालाँकि $args
, डिफ़ॉल्ट मानों पर सेट है और मेरा कस्टम प्रविष्टि navlevel
फ़िल्टर में नहीं दिखाया गया है।
वर्णित के रूप में मैं अपने नौबार को कैसे विभाजित कर सकता हूं? मैं अपनी रीति-नीति कैसे निर्धारित करूं $args
?