function widget($args, $instance) { extract($args); if (function_exists('icl_t')) { $instance['title'] = icl_t(VW_THEME_NAME . ' Widget', $this->id . '_title', $instance['title']); } if (!empty($instance['title'])) { $title = apply_filters('widget_title', $instance['title'], $instance, $this->id_base); } $cat_ids = $instance['cat_ids']; $style = $instance['style']; $count = intval($instance['count']); $order = strip_tags($instance['order']); echo $before_widget; if ($instance['title']) { echo $before_title . $title . $after_title; } global $post; $query_args = array('post_type' => 'post', 'ignore_sticky_posts' => true, 'posts_per_page' => $count, 'order' => 'DESC'); if (!empty($cat_ids)) { $query_args['cat'] = implode(',', $cat_ids); } if ($order == 'latest_posts') { // do nothing, it's a default ordering } elseif ($order == 'latest_gallery_posts') { $query_args['tax_query'] = array(array('taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array('post-format-gallery'))); } elseif ($order == 'latest_video_posts') { $query_args['tax_query'] = array(array('taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array('post-format-video'))); } elseif ($order == 'latest_audio_posts') { $query_args['tax_query'] = array(array('taxonomy' => 'post_format', 'field' => 'slug', 'terms' => array('post-format-audio'))); } elseif ($order == 'latest_featured') { $query_args['meta_query'][] = array('key' => 'vw_post_featured', 'value' => '1', 'compare' => '='); } elseif ($order == 'latest_reviews') { $query_args['meta_query'][] = array('key' => 'vw_enable_review', 'value' => '1', 'compare' => '='); } elseif ($order == 'most_review_scores') { $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vw_review_average_score'; $query_args['meta_query'][] = array('key' => 'vw_enable_review', 'value' => '1', 'compare' => '='); } elseif ($order == 'most_viewed') { $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vw_post_views'; } query_posts(apply_filters('vw_filter_widget_latest_posts_query', $query_args, $args['widget_id'])); $template_file = vw_build_template_path('templates/post-box/post-layout-%s.php', $style); unset($title); // Avoid double title include locate_template($template_file, false, false); wp_reset_query(); echo $after_widget; }
function vw_shortcode_posts($atts, $content = null) { $defaults = array('title' => '', 'cat' => '', 'cat_name' => '', 'cat_exclude' => '', 'tag' => '', 'format' => '', 'featured' => '', 'layout' => 'boxed', 'count' => '6', 'order' => 'latest'); extract(shortcode_atts($defaults, $atts)); global $post; $query_args = array('post_type' => 'post', 'ignore_sticky_posts' => true, 'posts_per_page' => $count, 'order' => 'DESC'); if (!empty($cat_name)) { $query_args['category_name'] = $cat_name; if (!empty($title)) { $category = get_category_by_slug($cat_name); $title = '<span class="' . vw_get_the_category_class($category->term_id) . '">' . $title . '</span>'; } } if (!empty($cat)) { $query_args['cat'] = $cat; if (!empty($title)) { $title = '<span class="' . vw_get_the_category_class($cat) . '">' . $title . '</span>'; } } if (!empty($cat_exclude)) { $query_args['category__not_in '] = $cat_exclude; } if (!empty($tag)) { $query_args['tag__in'] = $tag; } if (!empty($format)) { $query_args['tax_query'][] = array('taxonomy' => 'post_format', 'field' => 'slug', 'terms' => sprintf('post-format-%s', strtolower($format))); } if (!empty($featured)) { $query_args['meta_query'][] = array('key' => 'vw_post_featured', 'value' => '1', 'compare' => '='); } if ('latest' == $order) { $query_args['orderby'] = 'post_date'; } elseif ('random' == $order) { $query_args['orderby'] = 'rand'; } elseif ('popular' == $order) { $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vw_post_likes'; } elseif ('viewed' == $order) { $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vw_post_views'; } elseif ('reviews' == $order) { $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vw_review_average_score'; } query_posts($query_args); $template_file = vw_build_template_path('templates/post-box/post-layout-%s.php', $layout); ob_start(); include locate_template($template_file, false, false); wp_reset_query(); return ob_get_clean(); }