PluginProbe
WP Ultimate Post Grid / 2.4.0
WP Ultimate Post Grid v2.4.0
4.1.1 trunk 1.5 1.6 1.7 1.7.1 1.7.2 1.8 1.9 2.0 2.1 2.2 2.3 2.4.0 2.5.0 2.6.0 2.7.0 2.8.0 2.8.2 3.0.0 3.3.0 3.4.0 3.5.0 3.6.0 3.7.0 All 32 releases
← All changes | helpers/grid_cache.php +98 -10 1.92.4.0 View file →
@@ -39,16 +39,21 @@
39 39
40 40 $query = new WP_Query( $args );
41 41 $posts = $query->have_posts() ? $query->posts : array();
42 42
43 + $grid_ids = array();
43 44 foreach ( $posts as $grid_post )
44 45 {
45 46 $grid = new WPUPG_Grid( $grid_post );
46 47
47 48 if( in_array( $post_type, $grid->post_types() ) ) {
48 - $this->generate( $grid->ID() );
49 + $grid_ids[] = $grid->ID();
49 50 }
50 51 }
52 +
53 + if( count( $grid_ids ) > 0 ) {
54 + update_option( 'wpupg_regenerate_grids_check', $grid_ids );
55 + }
51 56 }
52 57
53 58 public function updated_term( $term_id, $taxonomy )
54 59 {
@@ -100,8 +105,16 @@
100 105 update_post_meta( $grid->ID(), 'wpupg_filter', $generated['filter'] );
101 106 }
102 107
103 108 public function dynamic_generate( $grid ) {
109 + // Don't cache term grid
110 + if( $grid->type() == 'terms' ) {
111 + return array(
112 + 'cache' => array(),
113 + 'filter' => '',
114 + );
115 + }
116 +
104 117 // Get Posts
105 118 $args = array(
106 119 'post_type' => $grid->post_types(),
107 120 'post_status' => $grid->post_status(),
@@ -164,8 +177,9 @@
164 177 foreach( $taxonomies as $taxonomy ) {
165 178 if( !isset( $posts_per_term[$taxonomy] ) ) $posts_per_term[$taxonomy] = array();
166 179
167 180 $terms = wp_get_post_terms( $post_id, $taxonomy );
181 + $terms = is_wp_error( $terms ) ? array() : $terms;
168 182
169 183 // Get parent terms if enabled
170 184 if( $grid->filter_match_parents() ) {
171 185 $parent_ids = array();
@@ -222,13 +236,18 @@
222 236
223 237 // Terms per post
224 238 $post_taxonomy_term_ids[] = $slug;
225 239
226 - // Filter terms
227 - $filter_terms[$slug] = array(
228 - 'taxonomy' => $taxonomy,
229 - 'name' => $term->name,
230 - );
240 + if( !array_key_exists( $slug, $filter_terms ) ) {
241 + // Filter terms
242 + $filter_terms[$slug] = array(
243 + 'taxonomy' => $taxonomy,
244 + 'name' => $term->name,
245 + 'count' => 1,
246 + );
247 + } else {
248 + $filter_terms[$slug]['count']++;
249 + }
231 250 }
232 251
233 252 $terms_per_post[$post_id][$taxonomy] = $post_taxonomy_term_ids;
234 253 }
@@ -233,8 +252,41 @@
233 252 $terms_per_post[$post_id][$taxonomy] = $post_taxonomy_term_ids;
234 253 }
235 254 }
236 255
256 + // Show Empty Terms
257 + if( $grid->filter_show_empty() ) {
258 + foreach( $taxonomies as $taxonomy ) {
259 + $terms = get_terms( $taxonomy, array(
260 + 'hide_empty' => false,
261 + ) );
262 +
263 + foreach( $terms as $term ) {
264 + // Check if terms are being limited
265 + if( $grid->filter_limit() ) {
266 + if( $grid->filter_limit_exclude() ) {
267 + if( isset( $limit_terms[$taxonomy] ) && in_array( $term->term_id, $limit_terms[$taxonomy] ) ) continue;
268 + } else {
269 + if( !isset( $limit_terms[$taxonomy] ) || !in_array( $term->term_id, $limit_terms[$taxonomy] ) ) continue;
270 + }
271 + }
272 +
273 + $slug = urldecode( $term->slug );
274 +
275 + if( !isset( $posts_per_term[$taxonomy][$slug] ) ) $posts_per_term[$taxonomy][$slug] = array();
276 +
277 + if( !array_key_exists( $slug, $filter_terms ) ) {
278 + // Filter terms
279 + $filter_terms[$slug] = array(
280 + 'taxonomy' => $taxonomy,
281 + 'name' => $term->name,
282 + 'count' => 0,
283 + );
284 + }
285 + }
286 + }
287 + }
288 +
237 289 $cache['taxonomies'] = $posts_per_term;
238 290 $cache['terms'] = $terms_per_post;
239 291
240 292 // Generate Filter
@@ -239,9 +291,9 @@
239 291
240 292 // Generate Filter
241 293 $filter = '';
242 294
243 - if( count( $filter_terms ) > 0 && $grid->filter_type() == 'isotope' ) {
295 + if( count( $filter_terms ) > 0 && ($grid->filter_type() == 'isotope' ) || $grid->filter_type() == 'text_isotope') {
244 296 $filter_style = $grid->filter_style();
245 297
246 298 // All Button
247 299 if( $filter_style['isotope']['all_button_text'] ) {
@@ -247,10 +299,36 @@
247 299 if( $filter_style['isotope']['all_button_text'] ) {
248 300 $filter .= '<div class="wpupg-filter-item wpupg-filter-isotope-term wpupg-filter-tag- active">' . $filter_style['isotope']['all_button_text'] . '</div>';
249 301 }
250 302
251 - $filter_terms_order = array_keys( $filter_terms );
252 - sort( $filter_terms_order );
303 + $filter_terms_order = array();
304 +
305 + if( $filter_style['isotope']['term_order'] == 'alphabetical_taxonomies' || $filter_style['isotope']['term_order'] == 'reverse_alphabetical_taxonomies' ) {
306 + // Order alphatically per taxonomy
307 + $terms_per_taxonomy = array();
308 +
309 + foreach( $filter_terms as $slug => $term ) {
310 + $taxonomy = $term['taxonomy'];
311 + if( !array_key_exists( $taxonomy, $terms_per_taxonomy ) ) {
312 + $terms_per_taxonomy[$taxonomy] = array();
313 + }
314 + $terms_per_taxonomy[$taxonomy][] = $slug;
315 + }
316 +
317 + foreach( $terms_per_taxonomy as $taxonomy => $terms ) {
318 + sort( $terms );
319 + $filter_terms_order = array_merge( $filter_terms_order, $terms );
320 + }
321 + } else {
322 + // Order alphabetically by default
323 + $filter_terms_order = array_keys( $filter_terms );
324 + sort( $filter_terms_order );
325 + }
326 +
327 + if( $filter_style['isotope']['term_order'] == 'reverse_alphabetical_taxonomies' || $filter_style['isotope']['term_order'] == 'reverse_alphabetical' ) {
328 + $filter_terms_order = array_reverse( $filter_terms_order );
329 + }
330 +
253 331 $filter_terms_order = apply_filters( 'wpupg_grid_cache_filter_isotope_term_order', $filter_terms_order, $grid );
254 332
255 333 foreach( $filter_terms_order as $slug ) {
256 334 $options = isset( $filter_terms[$slug] ) ? $filter_terms[$slug] : false;
@@ -255,10 +333,20 @@
255 333 foreach( $filter_terms_order as $slug ) {
256 334 $options = isset( $filter_terms[$slug] ) ? $filter_terms[$slug] : false;
257 335
258 336 if( $options ) {
259 - $filter .= '<div class="wpupg-filter-item wpupg-filter-isotope-term wpupg-filter-tag-' . $slug . '" data-taxonomy="' . $options['taxonomy'] . '" data-filter="' . $slug . '">' . $options['name'] . '</div>';
337 + if( $grid->filter_count() ) {
338 + $name = $options['name'] . ' (' . $options['count'] . ')';
339 + } else {
340 + $name = $options['name'];
341 + }
342 +
343 + $filter .= '<div class="wpupg-filter-item wpupg-filter-isotope-term wpupg-filter-isotope-term-' . $options['taxonomy'] . ' wpupg-filter-tag-' . $slug . '" data-taxonomy="' . $options['taxonomy'] . '" data-filter="' . $slug . '">' . $name . '</div>';
260 344 }
345 + }
346 +
347 + if( $grid->filter_type() == 'text_isotope' && WPUltimatePostGrid::is_addon_active('filter-text') ) {
348 + $filter .= WPUltimatePostGrid::addon('filter-text')->get_filter( $grid );
261 349 }
262 350 }
263 351
264 352 // Update Metadata