PluginProbe
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets / 4.2.3
Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets v4.2.3
4.5.4 4.2.1 4.2.2 4.2.3 4.5.0 4.5.2 4.5.3 4.2.0 4.1.18 4.1.17 4.1.16 4.1.15 4.1.14 4.1.13 4.1.12 4.1.11 4.1.10 4.1.9 4.1.8 4.0.9 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 All 146 releases
ultimate-post-kit / modules / maple-grid / module.php

module.php in Ultimate Post Kit – Elementor Post Grid, Post Carousel, Post Slider & Blog Layout Widgets 4.2.3, at modules/maple-grid/module.php

223 lines 11.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace UltimatePostKit\Modules\MapleGrid;
3 use UltimatePostKit\Traits\Global_Widget_Functions;
4
5 use UltimatePostKit\Base\Ultimate_Post_Kit_Module_Base;
6 use UltimatePostKit\Utils;
7
8 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
9
10 class Module extends Ultimate_Post_Kit_Module_Base {
11
12 use Global_Widget_Functions;
13
14 public function __construct() {
15 parent::__construct();
16
17 add_action( 'wp_ajax_nopriv_upk_maple_grid_loadmore_posts', [ $this, 'callback_ajax_loadmore_posts' ] );
18 add_action( 'wp_ajax_upk_maple_grid_loadmore_posts', [ $this, 'callback_ajax_loadmore_posts' ] );
19 }
20
21 public function get_name() {
22 return 'maple-grid';
23 }
24
25 public function get_widgets() {
26
27 $widgets = [
28 'Maple_Grid',
29 ];
30
31 return $widgets;
32 }
33
34 public function callback_ajax_loadmore_posts() {
35
36 $settings = [];
37
38 if ( isset( $_POST['settings'] ) && is_array( $_POST['settings'] ) ) {
39 $settings = map_deep( wp_unslash( $_POST['settings'] ), 'sanitize_text_field' );
40 }
41
42 $post_type = $settings['posts_source'] ?? 'post';
43
44 $settings = array_merge(
45 [
46 'posts_source' => 'post',
47 'posts_orderby' => 'date',
48 'posts_order' => 'DESC',
49 'posts_ignore_sticky_posts' => 'no',
50 'posts_only_with_featured_image' => 'no',
51 'posts_select_date' => '',
52 'posts_exclude_by' => [],
53 'posts_include_by' => [],
54 'posts_per_page' => isset( $_POST['per_page'] ) ? absint( $_POST['per_page'] ) : 0,
55 'posts_offset' => isset( $_POST['offset'] ) ? absint( $_POST['offset'] ) : 0,
56 ],
57 $settings
58 );
59
60 $ajaxposts = $this->query_args( $settings );
61
62 ob_start();
63 $found_posts = false;
64
65 if ( $ajaxposts->have_posts() ) {
66 $placeholder = \Elementor\Utils::get_placeholder_image_src();
67
68 while ( $ajaxposts->have_posts() ) {
69 $ajaxposts->the_post();
70 $found_posts = true;
71
72 $title = get_the_title();
73 $post_link = esc_url( get_permalink() );
74 $author_url = esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) );
75 $author_name = esc_html( get_the_author() );
76
77 $image_src = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large' );
78 $image_src = $image_src ? $image_src[0] : $placeholder;
79
80 $meta_sep = $settings['meta_separator'] ?? '-';
81 $grid_style = $settings['grid_style'] ?? '1';
82 $title_tag = Utils::get_valid_html_tag($settings['title_tags']);
83
84 ?>
85 <div <?php if ( ! empty( $settings['global_link'] ) && $settings['global_link'] === 'yes' ) { printf( 'onclick="window.open(\'%s\', \'_self\')"', esc_url( $post_link ) ); } ?> class="upk-item">
86 <div class="upk-item-box">
87 <div class="upk-image-wrap">
88 <div class="upk-main-image">
89 <img class="upk-img" src="<?php echo esc_url( $image_src ); ?>" alt="<?php echo esc_attr( $title ); ?>">
90 </div>
91
92 <?php if ( $settings['show_post_format'] === 'yes' && $grid_style !== '3' ) : ?>
93 <div class="upk-post-format">
94 <a href="<?php echo esc_url($post_link); ?>">
95 <?php if ( has_post_format( 'aside' ) ) : ?>
96 <i class="upk-icon-aside" aria-hidden="true"></i>
97 <?php elseif ( has_post_format( 'gallery' ) ) : ?>
98 <i class="upk-icon-gallery" aria-hidden="true"></i>
99 <?php elseif ( has_post_format( 'link' ) ) : ?>
100 <i class="upk-icon-link" aria-hidden="true"></i>
101 <?php elseif ( has_post_format( 'image' ) ) : ?>
102 <i class="upk-icon-image" aria-hidden="true"></i>
103 <?php elseif ( has_post_format( 'quote' ) ) : ?>
104 <i class="upk-icon-quote" aria-hidden="true"></i>
105 <?php elseif ( has_post_format( 'status' ) ) : ?>
106 <i class="upk-icon-status" aria-hidden="true"></i>
107 <?php elseif ( has_post_format( 'video' ) ) : ?>
108 <i class="upk-icon-video" aria-hidden="true"></i>
109 <?php elseif ( has_post_format( 'audio' ) ) : ?>
110 <i class="upk-icon-music" aria-hidden="true"></i>
111 <?php elseif ( has_post_format( 'chat' ) ) : ?>
112 <i class="upk-icon-chat" aria-hidden="true"></i>
113 <?php else : ?>
114 <i class="upk-icon-post" aria-hidden="true"></i>
115 <?php endif; ?>
116 </a>
117 </div>
118 <?php endif; ?>
119
120 <?php if ( ( $settings['show_category'] ?? 'yes' ) === 'yes' && $grid_style !== '3' ) : ?>
121 <div class="upk-category">
122 <?php echo wp_kses_post(upk_get_category( $post_type )); ?>
123 </div>
124 <?php endif; ?>
125 </div>
126
127 <div class="upk-content">
128 <div class="upk-content-inner">
129 <?php if ( ( $settings['show_author_avatar'] ?? 'yes' ) === 'yes' || ( $settings['show_author_name'] ?? 'yes' ) === 'yes' || ( $settings['show_date'] ?? 'yes' ) === 'yes' || ( $settings['show_reading_time'] ?? 'no' ) === 'yes' ) : ?>
130 <div class="upk-meta">
131 <?php if ( $grid_style !== '3' && ( $settings['show_author_avatar'] == 'yes' || $settings['show_author_name'] == 'yes' ) ) : ?>
132 <div class="upk-author">
133 <?php if ($settings['show_author_avatar'] == 'yes') : ?>
134 <?php echo wp_kses_post(get_avatar(get_the_author_meta('ID'), 36)); ?>
135 <?php endif; ?>
136
137 <?php if ($settings['show_author_name'] == 'yes') : ?>
138 <a class="author-name" href="<?php echo esc_url( get_author_posts_url(get_the_author_meta('ID')) ); ?>">
139 <?php echo esc_html( get_the_author() ); ?>
140 </a>
141 <?php endif; ?>
142 </div>
143 <?php endif; ?>
144
145 <?php if ( ( $settings['show_date'] ?? 'yes' ) === 'yes' ) : ?>
146 <div class="upk-blog-date" data-separator="<?php echo esc_html( $meta_sep ); ?>">
147 <div class="upk-blog-date">
148 <a class="date" href="#">
149 <i class="upk-icon-calendar" aria-hidden="true"></i>
150 <?php
151 if ( ( $settings['human_diff_time'] ?? 'no' ) === 'yes' ) {
152 echo esc_html( ultimate_post_kit_post_time_diff( ( ( $settings['human_diff_time_short'] ?? 'no' ) === 'yes' ) ? 'short' : '' ) );
153 } else {
154 echo get_the_date();
155 }
156 ?>
157 </a>
158 </div>
159 <?php if ( ( $settings['show_time'] ?? 'no' ) === 'yes' ) : ?>
160 <div class="upk-post-time">
161 <i class="upk-icon-clock" aria-hidden="true"></i>
162 <?php echo esc_html( get_the_time() ); ?>
163 </div>
164 <?php endif; ?>
165 </div>
166 <?php endif; ?>
167
168 <?php if ( function_exists( '_is_upk_pro_activated' ) && _is_upk_pro_activated() && function_exists( 'ultimate_post_kit_reading_time' ) && ( $settings['show_reading_time'] ?? '' ) === 'yes' ) : ?>
169 <div class="upk-reading-time" data-separator="<?php echo esc_html( $meta_sep ); ?>">
170 <?php echo esc_html( ultimate_post_kit_reading_time( get_the_content(), $settings['avg_reading_speed'], $settings['hide_seconds'] ?? 'no', $settings['hide_minutes'] ?? 'no' ) ); ?>
171 </div>
172 <?php endif; ?>
173 </div>
174 <?php endif; ?>
175
176 <?php if ( ! isset( $settings['show_title'] ) || $settings['show_title'] === 'yes' ) : ?>
177 <<?php echo esc_attr( $title_tag ); ?> class="upk-title">
178 <a
179 href="<?php echo esc_url($post_link); ?>"
180 title="<?php echo esc_attr( $title ); ?>"
181 class="title-animation-<?php echo esc_attr( $settings['title_style'] ); ?>"
182 <?php echo $settings['upk_link_new_tab'] === 'yes' ? 'target="_blank"' : ''; ?>
183 >
184 <?php echo esc_html( $title ); ?>
185 </a>
186 </<?php echo esc_attr( $title_tag ); ?>>
187 <?php endif; ?>
188
189 <?php if ( ( $settings['show_excerpt'] ?? 'yes' ) === 'yes' && $grid_style !== '3' ) : ?>
190 <div class="upk-text">
191 <?php
192 if ( has_excerpt() ) {
193 the_excerpt();
194 } else {
195 if ( function_exists( 'ultimate_post_kit_custom_excerpt' ) ) {
196 echo wp_kses_post( ultimate_post_kit_custom_excerpt( intval( $settings['excerpt_length'] ?? 20 ), false, '' ) );
197 } else {
198 echo esc_html( wp_trim_words( wp_strip_all_tags( get_the_content() ), intval( $settings['excerpt_length'] ?? 20 ) ) );
199 }
200 }
201 ?>
202 </div>
203 <?php endif; ?>
204 </div>
205 </div>
206 </div>
207 </div>
208 <?php
209 }
210 }
211
212 wp_reset_postdata();
213 $markup = ob_get_clean();
214
215 wp_send_json(
216 [
217 'success' => $found_posts,
218 'markup' => $found_posts ? $markup : esc_html__( 'No more found', 'ultimate-post-kit' ),
219 ]
220 );
221
222 }
223 }