यदि आप WP_Nav_Menu_Widget
कक्षा के कार्यान्वयन को देखते हैं तो आपको निम्नलिखित कोड दिखाई देंगे:
function widget($args, $instance) {
// Get menu
$nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;
if ( !$nav_menu )
return;
$instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
echo $args['before_widget'];
if ( !empty($instance['title']) )
echo $args['before_title'] . $instance['title'] . $args['after_title'];
wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );
echo $args['after_widget'];
}
इसका मतलब है कि मेनू को हुक करने का कोई मौका नहीं है। तो आपको wp_nav_menu
फ़ंक्शन कार्यान्वयन पर एक नज़र डालने की आवश्यकता है , जहां आप कोड की निम्नलिखित पंक्तियाँ पा सकते हैं:
$defaults = array(
'menu' => '',
'container' => 'div',
'container_class' => '',
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => '',
'echo' => true,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
'depth' => 0,
'walker' => '',
'theme_location' => ''
);
$args = wp_parse_args( $args, $defaults );
$args = apply_filters( 'wp_nav_menu_args', $args );
$args = (object) $args;
यहां आप देख सकते हैं कि wp_nav_menu
फ़ंक्शन में दिए गए सभी तर्क प्रतिस्थापित किए जा सकते हैं। तो आपको अपनी खुद की हुक हैंडलर बनाने की आवश्यकता है जो आपके वॉकर को एक नेविगेशन मेनू में जोड़ देगा। यह सरल हो सकता है:
function myplugin_custom_walker( $args ) {
return array_merge( $args, array(
'walker' => new My_Custom_Walker(),
// another setting go here ...
) );
}
add_filter( 'wp_nav_menu_args', 'myplugin_custom_walker' );
'walker' => new Walker_Nav_Menu()
अपने विशिष्ट मेनू के तर्कों में इसे केवल एक मेनू के लिए वर्डप्रेस डिफ़ॉल्ट वॉकर बनने के लिए फिर से ओवरराइड करने का प्रयास किया, लेकिन दुख की बात है कि यह काम नहीं करता है।