How to add ‘Show Thumbnail’ option in WPZOOM Featured Category Widget

WPZOOMFeaturedCategoryTribune is a lovely magazine theme from WPZOOM. The theme has custom widgets name WPZOOM Featured Category Widget
You could use this widget to display categories on homepage like the demo site (Politics – World – Sports – Automotive). The widget show thumbnails by default, it doesn’t have feature to disable that. What if you want a feature that allow you to show thumbnails for a category, but not for others.
It takes a little bit customization to WPZOOM Featured Category Widget

1. Open featured-category.php in functions > theme > widgets > featured-category.php

2. Replace all code between <?php and ?> in featured-category.php with following code


/*------------------------------------------*/
/* WPZOOM: Featured Category widget */
/*------------------------------------------*/
$wpzoomColors = array();
$wpzoomColors['blue'] = 'Blue';
$wpzoomColors['red'] = 'Red';
$wpzoomColors['black'] = 'Black';
class wpzoom_widget_category extends WP_Widget {

/* Widget setup. */
 function wpzoom_widget_category() {
 /* Widget settings. */
 $widget_ops = array( 'classname' => 'wpzoom', 'description' => __('Featured Category Widget for Homepage', 'wpzoom') );

/* Widget control settings. */
 $control_ops = array( 'width' => 250, 'height' => 350, 'id_base' => 'wpzoom-widget-cat' );

/* Create the widget. */
 $this->WP_Widget( 'wpzoom-widget-cat', __('WPZOOM: Featured Category', 'wpzoom'), $widget_ops, $control_ops );
 }

/* How to display the widget on the screen. */
 function widget( $args, $instance ) {
 extract( $args );

/* Our variables from the widget settings. */
 $title1 = apply_filters('widget_title', $instance['title1'] );
 $color1 = $instance['color1'];
 $posts1 = $instance['posts1'];
 $show_thumb = $instance['show_thumb'] ? true : false;
 $category1 = get_category($instance['category1']);
 if ($category1) {
 $categoryLink1 = get_category_link($category1);
 }

/* Before widget (defined by themes). */
 //echo $before_widget;

$z = 0;
 while ($z < 1)
 {
 $z++;

$color = "color$z";
 $categoryLink = "categoryLink$z";
 $title = "title$z";
 $posts = "posts$z";
 $category = $instance["category$z"];
?>
 <?php

echo '<div class="homecat '.$$color.'">';

if ( $$title ) { echo '<h4><a href="'.$$categoryLink.'">'.$$title.'</a></h4>'; } ?>

<ul>

<?php
 $second_query = new WP_Query( array( 'cat' => $category, 'showposts' => $$posts, 'orderby' => 'date', 'order' => 'DESC' ) );

$i = 0;
 if ( $second_query->have_posts() ) : while( $second_query->have_posts() ) : $second_query->the_post();
 unset($image,$cropLocation);
 $i++;
 global $post;

?>
 <li>

<div class="thumb">

<?php

$permalink = get_permalink();
 $comments = get_comments_number();
 $comment_write = '<span class="meta">'.get_the_date().'<strong>'.$comments.'</strong></span>';

if ( $show_thumb ) {

 get_the_image( array( 'size' => 'featured-cat', 'width' => 200, 'height' => 125, 'before' => '<a href="'.$permalink.'">', 'after' => $comment_write.'</a>', 'link_to_post' => false ) );

}
 ?>

</div>

<h3><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>

<p><?php the_content_limit(95); ?></p>

</li>
 <?php endwhile; ?>
 <?php endif; ?>

</ul>
 <ul class="stories">

<?php
 $slidepost = new WP_Query( array( 'cat' => $category, 'showposts' => 3, 'offset' => $$posts, 'orderby' => 'date', 'order' => 'DESC' ) );

while ( $slidepost->have_posts() ) {
 $slidepost->the_post();
 ?><li><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li><?php
 }
 ?>

</ul>
 <?php echo '<a href="'.$$categoryLink.'" class="nextActions">'; _e('More in this category &rarr;', 'wpzoom'); echo '</a>'; ?>
 </div>

<?php

} // while
 echo ' <!-- end .featCategory -->';
 /* After widget (defined by themes). */
 //echo $after_widget;
 wp_reset_query();
 }

/* Update the widget settings.*/
 function update( $new_instance, $old_instance ) {
 $instance = $old_instance;

/* Strip tags for title and name to remove HTML (important for text inputs). */
 $instance['title1'] = strip_tags( $new_instance['title1'] );
 $instance['category1'] = $new_instance['category1'];
 $instance['color1'] = $new_instance['color1'];
 $instance['posts1'] = $new_instance['posts1'];
 $instance['show_thumb'] = $new_instance['show_thumb'];

return $instance;
 }

/** Displays the widget settings controls on the widget panel.
 * Make use of the get_field_id() and get_field_name() function when creating your form elements. This handles the confusing stuff. */
 function form( $instance ) {

/* Set up some default widget settings. */
 $defaults = array( 'title1' => __('Category Name', 'wpzoom'), 'category1' => '0', 'color1' => 'blue', 'posts1' => '3' );
 $instance = wp_parse_args( (array) $instance, $defaults );
 global $wpzoomColors;
 ?>

<p>
 <label for="<?php echo $this->get_field_id( 'title1' ); ?>"><?php _e('Category Title:', 'wpzoom'); ?></label>
 <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title1' ); ?>" name="<?php echo $this->get_field_name( 'title1' ); ?>" value="<?php echo $instance['title1']; ?>" />
 </p>

<p>
 <label for="<?php echo $this->get_field_id('color1'); ?>"><?php _e('Title Background Color:', 'wpzoom'); ?></label>
 <select id="<?php echo $this->get_field_id('color1'); ?>" name="<?php echo $this->get_field_name('color1'); ?>" style="width:90%;">
 <?php
 foreach ($wpzoomColors as $key => $value) {
 $option = '<option value="'.$key;
 if ($key == $instance['color1']) { $option .='" selected="selected';}
 $option .= '">';
 $option .= $value;
 $option .= '</option>';
 echo $option;
 }
 ?>
 </select>
 </p>

<p>
 <label for="<?php echo $this->get_field_id('category1'); ?>"><?php _e('Category:', 'wpzoom'); ?></label>
 <select id="<?php echo $this->get_field_id('category1'); ?>" name="<?php echo $this->get_field_name('category1'); ?>" style="width:90%;">
 <option value="0">Choose category:</option>
 <?php
 $cats = get_categories('hide_empty=0');

foreach ($cats as $cat) {
 $option = '<option value="'.$cat->term_id;
 if ($cat->term_id == $instance['category1']) { $option .='" selected="selected';}
 $option .= '">';
 $option .= $cat->cat_name;
 $option .= ' ('.$cat->category_count.')';
 $option .= '</option>';
 echo $option;
 }
 ?>
 </select>
 </p>

<p>
 <label for="<?php echo $this->get_field_id('posts1'); ?>"><?php _e('Posts to show:', 'wpzoom'); ?></label>
 <select id="<?php echo $this->get_field_id('posts1'); ?>" name="<?php echo $this->get_field_name('posts1'); ?>" style="width:90%;">
 <?php
 $m = 0;
 while ($m < 11) {
 $m++;
 $option = '<option value="'.$m;
 if ($m == $instance['posts1']) { $option .='" selected="selected';}
 $option .= '">';
 $option .= $m;
 $option .= '</option>';
 echo $option;
 }
 ?>
 </select>
 </p>
 <p>
 <input class="checkbox" type="checkbox" <?php checked( $instance['show_thumb'], 'on' ); ?> id="<?php echo $this->get_field_id( 'show_thumb' ); ?>" name="<?php echo $this->get_field_name( 'show_thumb' ); ?>" />
 <label for="<?php echo $this->get_field_id( 'show_thumb' ); ?>">Display post thumbnail</label>
 </p>

<?php
 }
}

function wpzoom_register_category_widget() {
 register_widget('wpzoom_widget_category');
}
add_action('widgets_init', 'wpzoom_register_category_widget');

3. Select/Deselect Display Post Thumbnail on the widget
4. Done


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: