PluginProbe
WP Ultimate Post Grid / 2.8.0
WP Ultimate Post Grid v2.8.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
wp-ultimate-post-grid / helpers / shortcodes / grid_shortcode.php

grid_shortcode.php in WP Ultimate Post Grid 2.8.0, at helpers/shortcodes/grid_shortcode.php

216 lines 10.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class WPUPG_Grid_Shortcode {
4
5 public function __construct()
6 {
7 add_shortcode( 'wpupg-grid', array( $this, 'shortcode' ) );
8
9 // add_filter( 'mce_external_plugins', array( $this, 'tinymce_plugin' ) );
10 }
11
12 public function shortcode( $options )
13 {
14 $output = '';
15
16 $slug = strtolower( trim( $options['id'] ) );
17
18 if( $slug ) {
19 unset( $options['id'] );
20 $no_output_mode = isset( $options['wpupg_no_output'] ) && $options['wpupg_no_output'] ? true : false;
21 unset( $options['wpupg_no_output'] );
22
23 $post = get_page_by_path( $slug, OBJECT, WPUPG_POST_TYPE );
24
25 if( !is_null( $post ) ) {
26 $grid = WPUPG_Grid_Manager::get( $post );
27
28 // Check if we need to filter the grid dynamically
29 $dynamic_rules = array();
30 if( count( $options ) > 0 && WPUltimatePostGrid::is_premium_active() ) {
31
32 // Term Grid.
33 if ( $grid->type() == 'terms' ) {
34 if( isset( $options['term_id'] ) ) {
35 $term_ids = str_replace( ',', ';', $options['term_id'] );
36 $term_ids = str_replace( 'current_term', get_queried_object_id(), $term_ids );
37
38 $dynamic_rules = array(
39 'values' => explode( ';', $term_ids ),
40 'type' => 'restrict',
41 );
42 unset( $options['term_id'] );
43 }
44
45 if( isset( $options['exclude_term_id'] ) ) {
46 $term_ids = str_replace( ',', ';', $options['exclude_term_id'] );
47 $term_ids = str_replace( 'current_term', get_queried_object_id(), $term_ids );
48
49 $dynamic_rules = array(
50 'values' => explode( ';', $term_ids ),
51 'type' => 'exclude',
52 );
53 unset( $options['exclude_term_id'] );
54 }
55 } else {
56 // Post Grid.
57 if( isset( $options['post_id'] ) ) {
58 $post_ids = str_replace( ',', ';', $options['post_id'] );
59 $post_ids = str_replace( 'current_post', get_the_ID(), $post_ids );
60
61 $dynamic_rules[] = array(
62 'post_type' => 'wpupg_general',
63 'taxonomy' => 'id',
64 'values' => explode( ';', $post_ids ),
65 'type' => 'restrict',
66 );
67 unset( $options['post_id'] );
68 }
69
70 if( isset( $options['exclude_post_id'] ) ) {
71 $post_ids = str_replace( ',', ';', $options['exclude_post_id'] );
72 $post_ids = str_replace( 'current_post', get_the_ID(), $post_ids );
73
74 $dynamic_rules[] = array(
75 'post_type' => 'wpupg_general',
76 'taxonomy' => 'id',
77 'values' => explode( ';', $post_ids ),
78 'type' => 'exclude',
79 );
80 unset( $options['exclude_post_id'] );
81 }
82
83 if( isset( $options['author'] ) ) {
84 $author_ids = str_replace( ',', ';', $options['author'] );
85 $author_ids = str_replace( 'current_user', get_current_user_id(), $author_ids );
86
87 $dynamic_rules[] = array(
88 'post_type' => 'wpupg_general',
89 'taxonomy' => 'author',
90 'values' => explode( ';', $author_ids ),
91 'type' => 'restrict',
92 );
93 unset( $options['author'] );
94 }
95
96 if( isset( $options['exclude_author'] ) ) {
97 $author_ids = str_replace( ',', ';', $options['exclude_author'] );
98 $author_ids = str_replace( 'current_user', get_current_user_id(), $author_ids );
99
100 $dynamic_rules[] = array(
101 'post_type' => 'wpupg_general',
102 'taxonomy' => 'author',
103 'values' => explode( ';', $author_ids ),
104 'type' => 'exclude',
105 );
106 unset( $options['exclude_author'] );
107 }
108
109 if( isset( $options['date'] ) ) {
110 $date_condition = str_replace( '_today', '', $options['date'] );
111 $date_condition = in_array( $date_condition, array( 'before', 'after' ) ) ? $date_condition : 'is';
112
113 $dynamic_rules[] = array(
114 'post_type' => 'wpupg_general',
115 'taxonomy' => 'date',
116 'values' => array( $date_condition, date( 'Y-m-d' ) ),
117 'type' => 'restrict',
118 );
119 unset( $options['date'] );
120 }
121
122 foreach( $options as $taxonomy => $terms ) {
123 if( taxonomy_exists( $taxonomy ) ) {
124 $dynamic_rules[] = array(
125 'post_type' => 'wpupg_dynamic',
126 'taxonomy' => $taxonomy,
127 'values' => explode( ';', str_replace( ',', ';', $terms ) ),
128 'type' => 'restrict',
129 );
130 } elseif( 'exclude_' === substr( $taxonomy, 0, 8 ) ) {
131 $dynamic_rules[] = array(
132 'post_type' => 'wpupg_dynamic',
133 'taxonomy' => substr( $taxonomy, 8 ),
134 'values' => explode( ';', str_replace( ',', ';', $terms ) ),
135 'type' => 'exclude',
136 );
137 }
138 }
139 }
140 }
141 if( count( $dynamic_rules ) > 0 || 'rand' === $grid->order_by() ) {
142 $grid->set_dynamic_rules( $dynamic_rules );
143 } else if ( WPUltimatePostGrid::option( 'cache_reset_front_end', '1' ) == '1' ) {
144 // Make sure latest version of grid is shown.
145 $grid_ids = get_option( 'wpupg_regenerate_grids_check', false );
146
147 if( $grid_ids && in_array( $grid->ID(), $grid_ids ) ) {
148 WPUltimatePostGrid::get()->helper( 'grid_cache' )->generate( $grid->ID() );
149 }
150 }
151
152 if ( $no_output_mode ) {
153 return '';
154 }
155
156 $link_type = $grid->link_type();
157 $link_target = $grid->link_target();
158 $layout_mode = $grid->layout_mode();
159 $centered = $grid->centered() ? 'true' : 'false';
160
161 $posts = '<div id="wpupg-grid-' . esc_attr( $slug ) . '" class="wpupg-grid" data-grid="' . esc_attr( $slug ) . '" data-grid-id="' . $grid->ID() . '" data-link-type="' . $link_type . '" data-link-target="' . $link_target . '" data-layout-mode="' . $layout_mode . '" data-centered="' . $centered . '">';
162 $posts .= $grid->draw_posts();
163 $posts .= '</div>';
164
165 $output = apply_filters( 'wpupg_posts_shortcode', $posts, $grid );
166
167 // Message when no items match filter
168 if( $grid->empty_message() ) {
169 $output .= '<div id="wpupg-grid-' . esc_attr( $slug ) . '-empty" class="wpupg-grid-empty">' . $grid->empty_message() . '</div>';
170 }
171
172 $pagination = '';
173 if( $grid->pagination_type() == 'pages' ) {
174 $pagination_type = $grid->pagination_type();
175 $pagination_style = $grid->pagination_style();
176
177 $style_data = ' data-margin-vertical="' . $pagination_style['margin_vertical'] . '"';
178 $style_data .= ' data-margin-horizontal="' . $pagination_style['margin_horizontal'] . '"';
179 $style_data .= ' data-padding-vertical="' . $pagination_style['padding_vertical'] . '"';
180 $style_data .= ' data-padding-horizontal="' . $pagination_style['padding_horizontal'] . '"';
181 $style_data .= ' data-border-width="' . $pagination_style['border_width'] . '"';
182
183 $style_data .= ' data-background-color="' . $pagination_style['background_color'] . '"';
184 $style_data .= ' data-text-color="' . $pagination_style['text_color'] . '"';
185 $style_data .= ' data-border-color="' . $pagination_style['border_color'] . '"';
186
187 $style_data .= ' data-active-background-color="' . $pagination_style['background_active_color'] . '"';
188 $style_data .= ' data-active-text-color="' . $pagination_style['text_active_color'] . '"';
189 $style_data .= ' data-active-border-color="' . $pagination_style['border_active_color'] . '"';
190
191 $style_data .= ' data-hover-background-color="' . $pagination_style['background_hover_color'] . '"';
192 $style_data .= ' data-hover-text-color="' . $pagination_style['text_hover_color'] . '"';
193 $style_data .= ' data-hover-border-color="' . $pagination_style['border_hover_color'] . '"';
194
195 $pagination .= '<div id="wpupg-grid-' . esc_attr( $slug ) . '-pagination" class="wpupg-pagination wpupg-pagination-' . $pagination_type . '" style="text-align: ' . $pagination_style['alignment'] . ';" data-grid="' . esc_attr( $slug ) . '" data-type="' . $pagination_type . '"' . $style_data . '>';
196 $pagination .= $grid->draw_pagination();
197 $pagination .= '</div>';
198 }
199
200 $output .= apply_filters( 'wpupg_pagination_shortcode', $pagination, $grid );
201
202 wp_localize_script( 'wpupg_grid', 'wpupg_grid_' . $grid->ID(), array(
203 'posts' => $grid->posts(),
204 ));
205 }
206 }
207
208 return $output;
209 }
210
211 public function tinymce_plugin( $plugin_array )
212 {
213 $plugin_array['wpupg_grid_shortcode'] = WPUltimatePostGrid::get()->coreUrl . '/js/tinymce_shortcode.js';
214 return $plugin_array;
215 }
216 }