This example widget code, place the code in separate file, then include it in finctions.php like that:
require( get_template_directory() . '/menu-widget.php' );
Register the widget(match the class names!)-
function register_my_widget() { register_widget( 'example_widget' ); }
And call the widget:
add_action( 'widgets_init', function(){ register_widget( 'My_Widget' ); });
And here it comes the widget code:
<?php /** * Example Widget Class */ class example_widget extends WP_Widget { /** constructor -- name this the same as the class above */ function example_widget() { parent::WP_Widget(false, $name = 'Example Text Widget'); } /** @see WP_Widget::widget -- do not rename this */ function widget($args, $instance) { extract( $args ); $title = apply_filters('widget_title', $instance['title']); $message = $instance['message']; ?> <?php echo $before_widget; ?> <?php if ( $title ) echo $before_title . $title . $after_title; ?> <ul> <li><?php echo $message; ?></li> </ul> <?php echo $after_widget; ?> <?php } /** @see WP_Widget::update -- do not rename this */ function update($new_instance, $old_instance) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['message'] = strip_tags($new_instance['message']); return $instance; } /** @see WP_Widget::form -- do not rename this */ function form($instance) { $title = esc_attr($instance['title']); $message = esc_attr($instance['message']); ?> <p> <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /> </p> <p> <label for="<?php echo $this->get_field_id('message'); ?>"><?php _e('Simple Message'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('message'); ?>" name="<?php echo $this->get_field_name('message'); ?>" type="text" value="<?php echo $message; ?>" /> </p> <?php } } // end class example_widget add_action('widgets_init', create_function('', 'return register_widget("example_widget");')); ?>
You can use ultimate posts widget to display posts – ultimate-posts-widget.1.8.1