widget_cssclass = 'blogcorner-widget-metro-post'; $this->widget_description = __("Displays featured posts with an image", 'blogcorner'); $this->widget_id = 'Blogcorner_Metro_Post_Widget'; $this->widget_name = __('Blogcorner: Metro Post', 'blogcorner'); $this->settings = array( 'title' => array( 'type' => 'text', 'label' => __('Title', 'blogcorner'), ), 'layout_style' => array( 'type' => 'select', 'label' => __('Style Layout', 'blogcorner'), 'options' => array( 'metro-layout-1' => __('Layout 1', 'blogcorner'), 'metro-layout-2' => __('Layout 2', 'blogcorner'), 'metro-layout-3' => __('Layout 3', 'blogcorner'), 'metro-layout-4' => __('Layout 4', 'blogcorner'), 'metro-layout-5' => __('Layout 5', 'blogcorner'), ), 'std' => 'metro-layout-1', ), 'category' => array( 'type' => 'dropdown-taxonomies', 'label' => __('Select Category', 'blogcorner'), 'desc' => __('Leave empty if you don\'t want the posts to be category specific', 'blogcorner'), 'args' => array( 'taxonomy' => 'category', 'class' => 'widefat', 'hierarchical' => true, 'show_count' => 1, 'show_option_all' => __('— Select —', 'blogcorner'), ), ), 'show_category' => array( 'type' => 'checkbox', 'label' => __('Show Category', 'blogcorner'), 'std' => false, ), 'show_author' => array( 'type' => 'checkbox', 'label' => __('Show Author', 'blogcorner'), 'std' => false, ), 'show_date' => array( 'type' => 'checkbox', 'label' => __('Show Date', 'blogcorner'), 'std' => true, ), 'show_share' => array( 'type' => 'checkbox', 'label' => __('Show Share', 'blogcorner'), 'std' => true, ), 'date_format' => array( 'type' => 'select', 'label' => __('Date Format', 'blogcorner'), 'options' => array( 'format_1' => __('Format 1', 'blogcorner'), 'format_2' => __('Format 2', 'blogcorner'), ), 'std' => 'format_2', ), ); parent::__construct(); } /** * Query the posts and return them. * @param array $args * @param array $instance * @return WP_Query */ public function get_posts($args, $instance) { $post_count = ""; switch ($instance['layout_style']) { case "metro-layout-1": $post_count = "6"; break; case "metro-layout-2": $post_count = "5"; break; case "metro-layout-3": $post_count = "5"; break; case "metro-layout-4": $post_count = "5"; break; case "metro-layout-5": $post_count = "3"; break; default: $post_count = ""; } $query_args = array( 'post_status' => 'publish', 'posts_per_page' => $post_count, 'no_found_rows' => 1, 'ignore_sticky_posts' => 1 ); if (!empty($instance['category']) && -1 != $instance['category'] && 0 != $instance['category']) { $query_args['tax_query'][] = array( 'taxonomy' => 'category', 'field' => 'term_id', 'terms' => $instance['category'], ); } return new WP_Query(apply_filters('Blogcorner_Metro_Post_Widget_query_args', $query_args)); } /** * Output widget. * * @param array $args * @param array $instance * @see WP_Widget * */ public function widget($args, $instance) { ob_start(); echo $args['before_widget']; do_action('blogcorner_before_metro_widget'); $counter = 1; if (($posts = $this->get_posts($args, $instance)) && $posts->have_posts()) { ?>