Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.62 KB | None | 0 0
  1.  class Nav_Menu_Widget extends WP_Widget {
  2.  
  3.     public function __construct() {
  4.         $widget_ops = array( 'description' => __('Add a custom menu to your sidebar.') );
  5.         parent::__construct( 'nav_widget', __('Custom Menu'), $widget_ops );
  6.     }
  7.  
  8.     public function widget($args, $instance) {
  9.         // Get menu
  10.         $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;
  11.  
  12.         if ( !$nav_menu )
  13.             return;
  14.  
  15.         /** This filter is documented in wp-includes/default-widgets.php */
  16.         $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
  17.  
  18.         echo $args['before_widget'];
  19.  
  20.         if ( !empty($instance['title']) )
  21.             echo $args['before_title'] . $instance['title'] . $args['after_title'];
  22.  
  23.         $nav_menu_args = array(
  24.             'fallback_cb' => '',
  25.             'menu'        => $nav_menu
  26.         );
  27.         wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args ) );
  28.  
  29.         echo $args['after_widget'];
  30.     }
  31.  
  32.     public function update( $new_instance, $old_instance ) {
  33.         $instance = array();
  34.         if ( ! empty( $new_instance['title'] ) ) {
  35.             $instance['title'] = strip_tags( stripslashes($new_instance['title']) );
  36.         }
  37.         if ( ! empty( $new_instance['nav_menu'] ) ) {
  38.             $instance['nav_menu'] = (int) $new_instance['nav_menu'];
  39.         }
  40.         return $instance;
  41.     }
  42.  
  43.     public function form( $instance ) {
  44.         $title = isset( $instance['title'] ) ? $instance['title'] : '';
  45.         $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
  46.  
  47.         // Get menus
  48.         $menus = wp_get_nav_menus();
  49.  
  50.         // If no menus exists, direct the user to go and create some.
  51.         if ( !$menus ) {
  52.             echo '<p>'. sprintf( __('No menus have been created yet. <a href="%s">Create some</a>.'), admin_url('nav-menus.php') ) .'</p>';
  53.             return;
  54.         }
  55.         ?>
  56.         <p>
  57.             <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
  58.             <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $title; ?>" />
  59.         </p>
  60.         <p>
  61.             <label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Menu:'); ?></label>
  62.             <select id="<?php echo $this->get_field_id('nav_menu'); ?>" name="<?php echo $this->get_field_name('nav_menu'); ?>">
  63.                 <option value="0"><?php _e( '&mdash; Select &mdash;' ) ?></option>
  64.         <?php
  65.             foreach ( $menus as $menu ) {
  66.                 echo '<option value="' . $menu->term_id . '"'
  67.                     . selected( $nav_menu, $menu->term_id, false )
  68.                     . '>'. esc_html( $menu->name ) . '</option>';
  69.             }
  70.         ?>
  71.             </select>
  72.         </p>
  73.         <?php
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement