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 +89 -10 2.02.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 {
@@ -231,13 +236,18 @@
231 236
232 237 // Terms per post
233 238 $post_taxonomy_term_ids[] = $slug;
234 239
235 - // Filter terms
236 - $filter_terms[$slug] = array(
237 - 'taxonomy' => $taxonomy,
238 - 'name' => $term->name,
239 - );
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 + }
240 250 }
241 251
242 252 $terms_per_post[$post_id][$taxonomy] = $post_taxonomy_term_ids;
243 253 }
@@ -242,8 +252,41 @@
242 252 $terms_per_post[$post_id][$taxonomy] = $post_taxonomy_term_ids;
243 253 }
244 254 }
245 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 +
246 289 $cache['taxonomies'] = $posts_per_term;
247 290 $cache['terms'] = $terms_per_post;
248 291
249 292 // Generate Filter
@@ -248,9 +291,9 @@
248 291
249 292 // Generate Filter
250 293 $filter = '';
251 294
252 - if( count( $filter_terms ) > 0 && $grid->filter_type() == 'isotope' ) {
295 + if( count( $filter_terms ) > 0 && ($grid->filter_type() == 'isotope' ) || $grid->filter_type() == 'text_isotope') {
253 296 $filter_style = $grid->filter_style();
254 297
255 298 // All Button
256 299 if( $filter_style['isotope']['all_button_text'] ) {
@@ -256,10 +299,36 @@
256 299 if( $filter_style['isotope']['all_button_text'] ) {
257 300 $filter .= '<div class="wpupg-filter-item wpupg-filter-isotope-term wpupg-filter-tag- active">' . $filter_style['isotope']['all_button_text'] . '</div>';
258 301 }
259 302
260 - $filter_terms_order = array_keys( $filter_terms );
261 - 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 +
262 331 $filter_terms_order = apply_filters( 'wpupg_grid_cache_filter_isotope_term_order', $filter_terms_order, $grid );
263 332
264 333 foreach( $filter_terms_order as $slug ) {
265 334 $options = isset( $filter_terms[$slug] ) ? $filter_terms[$slug] : false;
@@ -264,10 +333,20 @@
264 333 foreach( $filter_terms_order as $slug ) {
265 334 $options = isset( $filter_terms[$slug] ) ? $filter_terms[$slug] : false;
266 335
267 336 if( $options ) {
268 - $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>';
269 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 );
270 349 }
271 350 }
272 351
273 352 // Update Metadata