<?php
/**
* MagZenPro Featured Posts Widget
*
* @package MagZenPro
*/
class MagZenPro_Featured_Post_Widget extends WP_Widget {
/**
* Register widget with WordPress.
*/
function __construct() {
parent::__construct(
'magzenpro-featured-post-widget', // Base ID
sprintf( esc_html__( '%s : Featured Post', 'magzenpro' ), wp_get_theme()->Name ), // Name
array( 'description' => __( 'Displays your latest posts or post from a selected category ', 'magzenpro' ), ) // Args
);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget( $args, $instance ) {
extract( $args );
extract( $instance );
global $post;
$instance = wp_parse_args( $instance, array(
'post_cat' => '',
'post_count' => 4,
'post_model' => __('latest','magzenpro'),
'post_layout' => __( 'vertical', 'magzenpro' ),
'post_col' => 1,
'title_status' => false,
) );
if( isset($post_model) && $post_model == 'latest' ) {
$magzen_args = array(
'posts_per_page' => $post_count,
'post_type' => 'post',
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'order' => 'DESC',
);
}else {
$magzen_args = array(
'posts_per_page' => $post_count,
'post_type' => 'post',
'post_status' => 'publish',
'ignore_sticky_posts' => true,
'order' => 'DESC',
'category__in' => $post_cat
);
}
// Title
if( isset($post_cat) && $post_cat && $post_model != 'latest') {
$post_cat_name = get_the_category_by_ID($post_cat);
}else{
$post_cat_name = apply_filters('magzen_recent_post_title', __('Latest Post','magzenpro') );
}
$title = apply_filters( 'widget_title', $post_cat_name );
// Post Col
switch ($post_col) {
case '2':
$col_class = 'eight columns';
break;
default:
$col_class = 'sixteen columns';
break;
}
//Post layout
if( $post_layout == 'horizontal') {
$post_image_class = 'four columns horizontal-image';
$post_content_class = 'twelve columns';
$post_date_class = "horizontal-date ";
}else{
$post_image_class = '';
$post_content_class = '';
$post_date_class = '';
}
/* Image cropping size */
if($post_layout == 'horizontal' && $post_col == 2 ) {
$image_size = 'magzenpro-horizontal-two';
}elseif($post_layout == 'horizontal' && $post_col == 1 ) {
$image_size = 'magzenpro-horizontal-one';
}elseif($post_layout == 'vertical' && $post_col == 2 ) {
$image_size = 'magzenpro-vertical-two';
}elseif($post_layout == 'vertical' && $post_col == 1 ) {
$image_size = 'magzenpro-vertical-one';
}
echo $before_widget;
$before_title = '<h4 class="widget-title">';
$after_title = '</h4>';
$magzen_featured_posts = new WP_Query( $magzen_args );
if( $magzen_featured_posts->have_posts() ) :
if ( ! empty( $title ) && !$title_status ) {
echo $before_title .'<span class="mag-divider">'. $title .'</span>'. $after_title;
}
while( $magzen_featured_posts->have_posts() ) :
$magzen_featured_posts->the_post(); ?>
<div class="<?php echo $col_class; ?>">
<div class="magazine-post-wrapper clearfix <?php echo $post_layout .' '. $image_size; ?>">
<div class="magazine-image <?php echo $post_image_class; ?>">
<?php if( has_post_thumbnail() ) :
$post_date = 'img-post-date'; ?>
<a href="<?php the_permalink() ?>" rel="bookmark"><?php the_post_thumbnail($image_size, array( 'title' => esc_attr( $title ), 'alt' => esc_attr( $title ) )); ?></a>
<?php else:
$post_date = 'post-date'; ?>
<?php endif; ?>
</div><!-- .entry-header -->
<?php if( $post_layout == 'vertical') : ?>
<span class="image-date <?php echo $post_date_class; echo $post_date; ?>"><a class="url fn n" href="<?php echo get_day_link(get_the_time('Y'), get_the_time('m'),get_the_time('d')); ?>"><?php the_time('j'); ?><span><?php the_time('M');?></span></a></span>
<?php endif; ?>
<div class="magazine-content-wrapper <?php echo $post_content_class; ?>">
<a href="<?php the_permalink() ?>"><?php the_title('<h4 class="entry-title">','</h4>'); ?></a>
<div class="magazine-slider-top-meta <?php echo $post_date; ?>">
<?php magzenpro_entry_top_meta(); ?>
</div>
<div class="magazine-content">
<?php the_content(); ?>
</div>
</div>
</div>
</div><?php
endwhile;
endif;
// Reset Post Data
wp_reset_postdata();
echo $after_widget;
}
/**
* Display the flexcount widget form.
*
* @param array $instance
* @return string|void
*/
public function form( $instance ) {
$instance = wp_parse_args( $instance, array(
'post_cat' => '',
'post_count' => 4,
'post_model' => __('latest','magzenpro'),
'post_layout' => __( 'vertical', 'magzenpro' ),
'post_col' => 1,
'title_status' => false,
) );
?>
<?php echo '<p style="display:block; margin: 20px 0px;">Layout will be as below:<br><img src="'. get_template_directory_uri() .'/images/widget-featured-post.png"></p>';?>
<p>
<label for="<?php echo $this->get_field_id('post_count') ?>"><?php _e('No. of Posts to display', 'magzenpro') ?></label>
<input type="text" class="widefat" id="<?php echo $this->get_field_id('post_count') ?>" name="<?php echo $this->get_field_name('post_count') ?>" value="<?php echo esc_attr($instance['post_count']) ?>" />
</p>
<p>
<input type="radio" <?php checked($instance['post_model'],'latest') ?> id="<?php echo $this->get_field_id( 'post_model' ); ?>" name="<?php echo $this->get_field_name( 'post_model' ); ?>" value="latest"/><?php _e( 'Show latest Posts', 'magzenpro' );?><br />
<input type="radio" <?php checked($instance['post_model'],'category') ?> id="<?php echo $this->get_field_id( 'post_model' ); ?>" name="<?php echo $this->get_field_name( 'post_model' ); ?>" value="category"/><?php _e( 'Show posts from a category', 'magzenpro' );?><br />
</p>
<p>
<label for="<?php echo $this->get_field_id('post_cat') ?>"><?php _e(' Select Category ', 'magzenpro') ?></label>
<?php wp_dropdown_categories(array( 'name' => $this->get_field_name( 'post_cat' ),'show_option_all' => __('All Category','magzenpro'),'show_count' => true, 'selected' => $instance['post_cat'] ) ); ?>
</p>
<p>
<label for="<?php echo $this->get_field_id('post_layout') ?>"><?php _e('Post Layout', 'magzenpro') ?></label>
<select id="<?php echo $this->get_field_id('post_layout') ?>" name="<?php echo $this->get_field_name('post_layout') ?>">
<option value="horizontal" <?php selected($instance['post_layout'], "horizontal") ?>>Horizontal Arrangement</option>
<option value="vertical" <?php selected($instance['post_layout'], "vertical") ?>>Vertical Arrangement</option>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id('post_col') ?>"><?php _e('Column', 'magzenpro') ?></label>
<select id="<?php echo $this->get_field_id('post_col') ?>" name="<?php echo $this->get_field_name('post_col') ?>">
<option value="1" <?php selected($instance['post_col'], "1") ?>>1</option>
<option value="2" <?php selected($instance['post_col'], "2") ?>>2</option>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id('title_status') ?>">
<input type="checkbox" id="<?php echo $this->get_field_id('title_status') ?>" name="<?php echo $this->get_field_name('title_status') ?>" <?php checked( $instance['title_status'] ) ?> />
<?php _e('Hide the Title', 'magzenpro') ?>
</label>
</p>
<?php
}
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['post_cat'] = ( ! empty( $new_instance['post_cat'] ) ) ? strip_tags( $new_instance['post_cat'] ) : '';
$instance['post_count'] = ( ! empty( $new_instance['post_count'] ) ) ? strip_tags( $new_instance['post_count'] ) : '';
$instance['post_layout'] = ( ! empty( $new_instance['post_layout'] ) ) ? strip_tags( $new_instance['post_layout'] ) : '';
$instance['post_col'] = ( ! empty( $new_instance['post_col'] ) ) ? strip_tags( $new_instance['post_col'] ) : '';
$instance['post_model'] = ( ! empty( $new_instance['post_model'] ) ) ? strip_tags( $new_instance['post_model'] ) : '';
$instance['title_status'] = !empty($new_instance['title_status']);
return $instance;
}
} // class Foo_Widget