function vibe_post_grid($atts, $content = null) { global $vibe_options; $error = new VibeErrors(); if (!isset($atts) || !isset($atts['post_type'])) { return $error->get_error('unsaved_editor'); } $attributes = v_get_attributes($atts, "vibe_post_grid"); if (isset($atts['masonry']) && $atts['masonry']) { wp_enqueue_script('masonry-js', VIBE_PLUGIN_URL . '/vibe-shortcodes/js/masonry.min.js', array('jquery'), '1.0', true); $atts['custom_css'] .= '.grid.masonry li .block { margin-bottom:' . (isset($atts['gutter']) ? $atts['gutter'] : '30') . 'px;}'; } if ($atts['custom_css'] && strlen($atts['custom_css']) > 5) { $output = '<style>' . $atts['custom_css'] . '</style>'; } else { $output = ''; } $output .= "<div {$attributes['class']}{$attributes['inline_styles']}>"; if (!isset($atts['post_ids']) || strlen($atts['post_ids']) < 2) { if (isset($atts['term']) && isset($atts['taxonomy']) && $atts['term'] != 'nothing_selected') { if (isset($atts['taxonomy']) && $atts['taxonomy'] != '') { $check = term_exists($atts['term'], $atts['taxonomy']); if ($atts['term'] != 'nothing_selected') { if ($check == 0 || $check == null || !$check) { $error = new VibeErrors(); $output .= $error->get_error('term_taxonomy_mismatch'); $output .= '</div>'; return $output; } } $check = is_object_in_taxonomy($atts['post_type'], $atts['taxonomy']); if ($check == 0 || $check == null || !$check) { $error = new VibeErrors(); $output .= $error->get_error('term_postype_mismatch'); $output .= '</div>'; return $output; } } if ($atts['column_width'] < 311) { $cols = 'small'; } if ($atts['column_width'] >= 311 && $atts['column_width'] < 460) { $cols = 'medium'; } if ($atts['column_width'] >= 460 && $atts['column_width'] < 769) { $cols = 'big'; } if ($atts['column_width'] >= 769) { $cols = 'full'; } if (isset($atts['taxonomy']) && $atts['taxonomy'] != '') { if ($atts['taxonomy'] == 'category') { $atts['taxonomy'] = 'category_name'; } if ($atts['taxonomy'] == 'tag') { $atts['taxonomy'] = 'tag_name'; } } $query_args = array('post_type' => $atts['post_type'], $atts['taxonomy'] => $atts['term'], 'posts_per_page' => $atts['grid_number']); } else { $query_args = array('post_type' => $atts['post_type'], 'posts_per_page' => $atts['grid_number']); } if ($atts['post_type'] == 'course') { switch ($atts['course_style']) { case 'popular': $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'vibe_students'; break; case 'rated': $query_args['orderby'] = 'meta_value_num'; $query_args['meta_key'] = 'average_rating'; break; case 'reviews': $query_args['orderby'] = 'comment_count'; break; case 'start_date': $args['orderby'] = 'meta_value'; $args['meta_key'] = 'vibe_start_date'; $args['meta_type'] = 'DATE'; $args['order'] = 'ASC'; break; case 'random': $query_args['orderby'] = 'rand'; break; } $query_args = apply_filters('wplms_grid_course_filters', $query_args); } } else { $cus_posts_ids = explode(",", $atts['post_ids']); $query_args = array('post_type' => $atts['post_type'], 'post__in' => $cus_posts_ids); } global $paged; $paged = get_query_var('paged') ? get_query_var('paged') : 1; if (get_query_var('paged')) { $paged = get_query_var('paged'); } elseif (get_query_var('page')) { $paged = get_query_var('page'); } else { $paged = 1; } if (isset($atts['pagination']) && $atts['pagination']) { $query_args['paged'] = $paged; } $istyle = ''; query_posts($query_args); $masonry = $style = $rel = ''; if (isset($atts['masonry']) && $atts['masonry']) { $atts['grid_columns'] = ' grid-item'; $style = 'style="width:' . $atts['column_width'] . 'px;"'; $masonry = 'masonry'; $istyle .= ' data-width="' . $atts['column_width'] . '" data-gutter="' . (isset($atts['gutter']) ? $atts['gutter'] : '30') . '"'; // Rel-width used in Masonry+infinite scroll } else { $cols = $atts['grid_columns']; } $infinite = ''; if (isset($atts['infinite']) && $atts['infinite']) { $infinite = ' inifnite_scroll'; $paged = get_query_var('paged') ? get_query_var('paged') : 1; $rel = 'data-page=' . $paged; } if (isset($atts['title']) && $atts['title'] && $atts['title'] != 'Content') { $ntitle = $atts['title']; $ntitle = preg_replace('/[^a-zA-Z0-9\']/', '_', $ntitle); $ntitle = str_replace("'", '', $ntitle); $output .= '<div id="' . $ntitle . '"></div>'; } global $wp_query; if ($atts['show_title']) { $output .= '<h3 class="heading"><span>' . $atts['title'] . '</span></h3>'; } $output .= '<div class="vibe_grid ' . $infinite . ' ' . $masonry . '" ' . $rel . '><div class="wp_query_args" data-max-pages="' . $wp_query->max_num_pages . '">' . json_encode($atts) . '</div>'; if (have_posts()) { $output .= '<ul class="grid ' . $masonry . '" ' . $istyle . '>'; while (have_posts()) { the_post(); global $post; $output .= '<li class="' . $atts['grid_columns'] . '" ' . $style . '>'; $output .= thumbnail_generator($post, $atts['featured_style'], $cols, $atts['grid_excerpt_length'], $atts['grid_link'], $atts['grid_lightbox']); $output .= '</li>'; } $output .= '</ul>'; } else { $error = new VibeErrors(); $output .= $error->get_error('no_posts'); } wp_reset_postdata(); $output .= '</div>'; if (isset($atts['infinite']) && $atts['infinite']) { $output .= '<div class="load_grid"><span>' . __('Loading..', 'vibe-customtypes') . '</i></span></div> <div class="end_grid"><span>' . __('No more to load', 'vibe-customtypes') . '</i></span></div>'; } $output .= "</div>"; if (isset($atts['pagination']) && $atts['pagination']) { ob_start(); pagination(); $output .= ob_get_contents(); ob_end_clean(); } wp_reset_query(); wp_reset_postdata(); return $output; }
function widget($args, $instance) { extract($args); //Our variables from the widget settings. $title = apply_filters('widget_title', $instance['title']); echo $before_widget; // Display the widget title if ($title) { echo $before_title . $title . $after_title; } if (isset($instance['taxonomy']) && $instance['taxonomy'] != '') { $check = term_exists($instance['term'], $instance['taxonomy']); if ($check == 0 || $check == null || !$check) { $error = new VibeErrors(); echo $error->get_error('term_taxonomy_mismatch'); } $check = is_object_in_taxonomy($instance['type'], $instance['taxonomy']); if ($check == 0 || $check == null || !$check) { $error = new VibeErrors(); echo $error->get_error('term_postype_mismatch'); } } $query = array('posts_per_page' => $instance['num']); // if($instance['type'] != 'post') { $query['post_type'] = $instance['type']; //} if (!empty($instance['taxonomy'])) { if ($instance['taxonomy'] == 'category') { $instance['taxonomy'] = 'category_name'; } if ($instance['taxonomy'] == 'tag') { $instance['taxonomy'] = 'tag_name'; } $query[$instance['taxonomy']] = $instance['term']; } if ($instance['sort'] == 'popular') { $query['orderby'] = 'comment_count'; } $loop = new WP_Query($query); ?> <div class="postlist <?php echo $instance['theme'] . ' post' . $instance['size']; ?> "> <ul class="vibeposts"> <?php if ($instance['style'] == 'post') { while ($loop->have_posts()) { $loop->the_post(); $thumb = get_the_post_thumbnail($loop->post->ID, $instance['size']); if (isset($instance['chars']) && $instance['chars'] != '') { $chars = intval($instance['chars']); } else { $chars = 80; } echo ' <li> <article> <div class="post_thumb">'; echo '<a href="' . get_permalink($loop->post->ID) . '" class="' . $instance['size'] . '_thumb">' . $thumb . '</a> </div> <h4 class="post_title"><a href="' . get_permalink($loop->post->ID) . '">' . get_the_title($loop->post->ID) . '</a></h4> <p class="post_excerpt">' . custom_excerpt($chars) . '</p> </article> </li>'; } } if ($instance['style'] == 'imagetitle') { while ($loop->have_posts()) { $loop->the_post(); $thumb = get_the_post_thumbnail($loop->post->ID, $instance['size']); echo '<li> <article> <div class="post_thumb">'; echo '<a href="' . get_permalink($loop->post->ID) . '">' . $thumb . '</a> </div> <h5><a href="' . get_permalink($loop->post->ID) . '">' . get_the_title($loop->post->ID) . '</a></h5> </article> </li>'; } } if ($instance['style'] == 'image') { while ($loop->have_posts()) { $loop->the_post(); $thumb = get_the_post_thumbnail($loop->post->ID, $instance['size']); echo '<li> <div class="post_thumb imageonly">'; echo '<a href="' . get_permalink($loop->post->ID) . '">' . $thumb . '</a> </div> </li>'; } } if ($instance['style'] == 'title') { while ($loop->have_posts()) { $loop->the_post(); echo '<li> <h5><a href="' . get_permalink($loop->post->ID) . '">' . get_the_title($loop->post->ID) . '</a></h5> </li>'; } } ?> </ul> </div> <?php // Restore original Query & Post Data wp_reset_query(); wp_reset_postdata(); echo $after_widget; }