Customized Recent Post WP Default Widget issue, need help.
-
Okay, So I copied the code from the wordpress default widgets and renamed it and added it to my functions php. I wanted to add an image to it which I did and worked. My issue is even though I renamed the widget it also applied it to the default one which I didn’t want. I want to offer the default option which is link only and mine with post image in it. can someone help me out?
Here is my custom-post-type.php code:
<?php /** * Recent_Posts widget class * * @since 2.8.0 */ class jr2_recent_posts_widget extends WP_Widget { function __construct() { $widget_ops = array('classname' => 'jr2_widget_recent_entries', 'description' => __( "The most recent posts on your site") ); parent::__construct('recent-posts', __('JR2 Recent Posts'), $widget_ops); $this->alt_option_name = 'jr2_widget_recent_entries'; add_action( 'save_post', array($this, 'flush_widget_cache') ); add_action( 'deleted_post', array($this, 'flush_widget_cache') ); add_action( 'switch_theme', array($this, 'flush_widget_cache') ); } function widget($args, $instance) { $cache = wp_cache_get('jr2_widget_recent_posts', 'widget'); if ( !is_array($cache) ) $cache = array(); if ( ! isset( $args['widget_id'] ) ) $args['widget_id'] = $this->id; if ( isset( $cache[ $args['widget_id'] ] ) ) { echo $cache[ $args['widget_id'] ]; return; } ob_start(); extract($args); $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' ); $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 10; if ( ! $number ) $number = 10; $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false; $r = new WP_Query( apply_filters( 'jr2_widget_posts_args', array( 'posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true ) ) ); if ($r->have_posts()) : ?> <?php echo $before_widget; ?> <?php if ( $title ) echo $before_title . $title . $after_title; ?> <ul> <?php while ( $r->have_posts() ) : $r->the_post(); ?> <li> <?php if ( has_post_thumbnail() ) { the_post_thumbnail(); } ?> <a href="<?php the_permalink() ?>" title="<?php echo esc_attr( get_the_title() ? get_the_title() : get_the_ID() ); ?>"><?php if ( get_the_title() ) the_title(); else the_ID(); ?></a> <?php if ( $show_date ) : ?> <span class="post-date"><?php echo get_the_date(); ?></span> <?php endif; ?> </li> <?php endwhile; ?> </ul> <?php echo $after_widget; ?> <?php // Reset the global $the_post as this query will have stomped on it wp_reset_postdata(); endif; $cache[$args['widget_id']] = ob_get_flush(); wp_cache_set('jr2_widget_recent_posts', $cache, 'widget'); } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags($new_instance['title']); $instance['number'] = (int) $new_instance['number']; $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false; $this->flush_widget_cache(); $alloptions = wp_cache_get( 'alloptions', 'options' ); if ( isset($alloptions['jr2_widget_recent_entries']) ) delete_option('jr2_widget_recent_entries'); return $instance; } function flush_widget_cache() { wp_cache_delete('jr2_widget_recent_posts', 'widget'); } function form( $instance ) { $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5; $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false; ?> <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( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label> <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p> <p><input class="checkbox" type="checkbox" <?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" /> <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label></p> <?php } } ?>In my functions.php file:
/* -- jr2 recent post widget -- ----------------------------------------------------------- -- */ require_once( TEMPLATEPATH . '/widgets/custom-post-type.php' ); function jr2_recent_posts_custom_widgets() { register_widget( 'jr2_recent_posts_widget' ); } add_action( 'widgets_init', 'jr2_recent_posts_custom_widgets' );
-
I just realized by doing this it over rite the default widget and only displays mine even thought I created it into t separate file and renamed it. I wanted to be able to display both.
okay i figured it out for those that are interested I changed the following:
function __construct() { $widget_ops = array('classname' => 'jr2_widget_recent_entries', 'description' => __( "The most recent posts on your site") ); parent::__construct('recent-posts', __('JR2 Recent Posts'), $widget_ops); $this->alt_option_name = 'jr2_widget_recent_entries'; add_action( 'save_post', array($this, 'flush_widget_cache') ); add_action( 'deleted_post', array($this, 'flush_widget_cache') ); add_action( 'switch_theme', array($this, 'flush_widget_cache') ); }function __construct() { parent::__construct( 'jr2_recent_post_widget', // Base ID 'JR2 Recent Post', // Name array( 'description' => __( 'Most recent posts on your site'), ) // Args ); $this->alt_option_name = 'widget_recent_entries'; add_action( 'save_post', array($this, 'flush_widget_cache') ); add_action( 'deleted_post', array($this, 'flush_widget_cache') ); add_action( 'switch_theme', array($this, 'flush_widget_cache') ); }The Parent construct name could not simply be modified it had to be completely be renamed.
The topic ‘Customized Recent Post WP Default Widget issue, need help.’ is closed to new replies.