|
<?php |
|
|
|
/* |
|
Example 1 - overriding default navigation widget to use walker |
|
Author: Bartek Makowski |
|
*/ |
|
|
|
//inside wp-content/themes/{template}/functions.php |
|
|
|
class LMU_WP_Nav_Menu_Widget extends WP_Nav_Menu_Widget{ |
|
public 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; |
|
|
|
/** This filter is documented in wp-includes/default-widgets.php */ |
|
$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']; |
|
|
|
$nav_menu_args = array( |
|
'fallback_cb' => '', |
|
'menu' => $nav_menu, |
|
'container' => 'ul', |
|
'echo' => true, |
|
'items_wrap' => widget_nav_wrap(), |
|
'walker' => new walker_widget_nav() |
|
); |
|
|
|
/** |
|
* Filter the arguments for the Custom Menu widget. |
|
* |
|
* @since 4.2.0 |
|
* |
|
* @param array $nav_menu_args { |
|
* An array of arguments passed to wp_nav_menu() to retrieve a custom menu. |
|
* |
|
* @type callback|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty. |
|
* @type mixed $menu Menu ID, slug, or name. |
|
* } |
|
* @param stdClass $nav_menu Nav menu object for the current menu. |
|
* @param array $args Display arguments for the current widget. |
|
*/ |
|
wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args ) ); |
|
|
|
echo $args['after_widget']; |
|
} |
|
} |
|
|
|
function myplugin_register_widgets() { |
|
register_widget( 'LMU_WP_Nav_Menu_Widget' ); |
|
} |
|
|
|
add_action( 'widgets_init', 'myplugin_register_widgets' ); |