PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.2.7
Post Grid Gutenberg Blocks – PostX v2.2.7
5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 5.0.17 2.1.1 2.1.2 All 237 releases
ultimate-post / classes / Functions.php

Functions.php in Post Grid Gutenberg Blocks – PostX 2.2.7, at classes/Functions.php

791 lines 28.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Common Functions.
4 *
5 * @package ULTP\Functions
6 * @since v.1.0.0
7 */
8 namespace ULTP;
9
10 defined('ABSPATH') || exit;
11
12 /**
13 * Functions class.
14 */
15 class Functions{
16
17 /**
18 * Setup class.
19 *
20 * @since v.1.0.0
21 */
22 public function __construct(){
23 $GLOBALS['ultp_settings'] = get_option('ultp_options');
24 }
25
26
27 /**
28 * Set Link with the Parameters
29 *
30 * @since v.1.1.0
31 * @return STRING | URL with Arg
32 */
33 public function get_premium_link( $url = 'https://www.wpxpo.com/postx/' ) {
34 $affiliate_id = apply_filters( 'ultp_affiliate_id', FALSE );
35 $arg = array( 'utm_source' => 'go_premium' );
36 if ( ! empty( $affiliate_id ) ) {
37 $arg[ 'ref' ] = esc_attr( $affiliate_id );
38 }
39 return add_query_arg( $arg, $url );
40 }
41
42
43 /**
44 * Get Width and Height of the Image
45 *
46 * @since v.1.1.0
47 * @return STRING | Image Size
48 */
49 public function get_size($name = ''){
50 global $_wp_additional_image_sizes;
51 $image_size = $name ? ( isset($_wp_additional_image_sizes[$name]) ? $_wp_additional_image_sizes[$name] : array_values($_wp_additional_image_sizes)[0] ) : array_values($_wp_additional_image_sizes)[0];
52
53 return ' width="'.$image_size['width'].'" height="'.$image_size['height'].'" ';
54 }
55
56
57 /**
58 * Image Placeholder
59 *
60 * @since v.1.1.0
61 * @return STRING | Image Placeholder
62 */
63 public function img_placeholder($type = 'small') {
64 switch ($type) {
65 case 'small':
66 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAABLAQMAAACr9CA9AAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAABZJREFUOI1jYMADmEe5o9xR7iiXQi4A4BsA388WUyMAAAAASUVORK5CYII=';
67 break;
68
69 case 'wide':
70 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKCAYAAADVTVykAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAB9JREFUeNpi/P//P8NAAiaGAQajDhh1wKgDRh0AEGAAQTcDEcKDrpMAAAAASUVORK5CYII=';
71 break;
72
73 case 'square':
74 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEX///+nxBvIAAAAAXRSTlMAQObYZgAAAApJREFUCJljYAAAAAIAAfRxZKYAAAAASUVORK5CYII=';
75 break;
76
77 case 'slider':
78 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKYAAABkCAMAAAA7drv6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF////AAAAVcLTfgAAAAF0Uk5TAEDm2GYAAAAqSURBVHja7MEBDQAAAMKg909tDjegAAAAAAAAAAAAAAAAAAAAAH5NgAEAQTwAAWZtItYAAAAASUVORK5CYII=';
79 break;
80
81 default:
82 return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYYAAADcAQMAAABOLJSDAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACJJREFUaIHtwTEBAAAAwqD1T20ND6AAAAAAAAAAAAAA4N8AKvgAAUFIrrEAAAAASUVORK5CYII=';
83 break;
84 }
85 }
86
87
88 /**
89 * Quick Query
90 *
91 * @since v.1.1.0
92 * @return ARRAY | Query Arg
93 */
94 public function get_quick_query($prams, $args) {
95 switch ($prams['queryQuick']) {
96 case 'sticky_posts':
97 $args['post__in'] = get_option('sticky_posts');
98 break;
99 case 'latest_post_published':
100 $args['orderby'] = 'date';
101 $args['order'] = 'DESC';
102 break;
103 case 'latest_post_modified':
104 $args['orderby'] = 'modified';
105 $args['order'] = 'DESC';
106 break;
107 case 'oldest_post_published':
108 $args['orderby'] = 'date';
109 $args['order'] = 'ASC';
110 break;
111 case 'oldest_post_modified':
112 $args['orderby'] = 'modified';
113 $args['order'] = 'ASC';
114 break;
115 case 'alphabet_asc':
116 $args['orderby'] = 'title';
117 $args['order'] = 'ASC';
118 break;
119 case 'alphabet_desc':
120 $args['orderby'] = 'title';
121 $args['order'] = 'DESC';
122 break;
123 case 'random_post':
124 $args['orderby'] = 'rand';
125 $args['order'] = 'ASC';
126 break;
127 case 'random_post_7_days':
128 $args['orderby'] = 'rand';
129 $args['order'] = 'ASC';
130 $args['date_query'] = array( array( 'after' => '1 week ago') );
131 break;
132 case 'random_post_30_days':
133 $args['orderby'] = 'rand';
134 $args['order'] = 'ASC';
135 $args['date_query'] = array( array( 'after' => '1 month ago') );
136 break;
137 case 'most_comment':
138 $args['orderby'] = 'comment_count';
139 $args['order'] = 'DESC';
140 break;
141 case 'most_comment_1_day':
142 $args['orderby'] = 'comment_count';
143 $args['order'] = 'DESC';
144 $args['date_query'] = array( array( 'after' => '1 day ago') );
145 break;
146 case 'most_comment_7_days':
147 $args['orderby'] = 'comment_count';
148 $args['order'] = 'DESC';
149 $args['date_query'] = array( array( 'after' => '1 week ago') );
150 break;
151 case 'most_comment_30_days':
152 $args['orderby'] = 'comment_count';
153 $args['order'] = 'DESC';
154 $args['date_query'] = array( array( 'after' => '1 month ago') );
155 break;
156 case 'popular_post_1_day_view':
157 $args['meta_key'] = '__post_views_count';
158 $args['orderby'] = 'meta_value meta_value_num';
159 $args['order'] = 'DESC';
160 $args['date_query'] = array( array( 'after' => '1 day ago') );
161 break;
162 case 'popular_post_7_days_view':
163 $args['meta_key'] = '__post_views_count';
164 $args['orderby'] = 'meta_value meta_value_num';
165 $args['order'] = 'DESC';
166 $args['date_query'] = array( array( 'after' => '1 week ago') );
167 break;
168 case 'popular_post_30_days_view':
169 $args['meta_key'] = '__post_views_count';
170 $args['orderby'] = 'meta_value meta_value_num';
171 $args['order'] = 'DESC';
172 $args['date_query'] = array( array( 'after' => '1 month ago') );
173 break;
174 case 'popular_post_all_times_view':
175 $args['meta_key'] = '__post_views_count';
176 $args['orderby'] = 'meta_value meta_value_num';
177 $args['order'] = 'DESC';
178 break;
179 default:
180 # code...
181 break;
182 }
183 return $args;
184 }
185
186
187 /**
188 * Get All Reusable ID
189 *
190 * @since v.1.1.0
191 * @return ARRAY | Query Arg
192 */
193 public function reusable_id($post_id){
194 $reusable_id = array();
195 if($post_id){
196 $post = get_post($post_id);
197 if (has_blocks($post->post_content)) {
198 $blocks = parse_blocks($post->post_content);
199 foreach ($blocks as $key => $value) {
200 if(isset($value['attrs']['ref'])) {
201 $reusable_id[] = $value['attrs']['ref'];
202 }
203 }
204 }
205 }
206 return $reusable_id;
207 }
208
209
210 /**
211 * Set CSS Style
212 *
213 * @since v.1.1.0
214 * @return ARRAY | Query Arg
215 */
216 public function set_css_style($post_id){
217 if( $post_id ){
218 $upload_dir_url = wp_get_upload_dir();
219 $upload_css_dir_url = trailingslashit( $upload_dir_url['basedir'] );
220 $css_dir_path = $upload_css_dir_url . "ultimate-post/ultp-css-{$post_id}.css";
221
222 $css_dir_url = trailingslashit( $upload_dir_url['baseurl'] );
223 if (is_ssl()) {
224 $css_dir_url = str_replace('http://', 'https://', $css_dir_url);
225 }
226
227 // Reusable CSS
228 $reusable_id = ultimate_post()->reusable_id($post_id);
229 foreach ( $reusable_id as $id ) {
230 $reusable_dir_path = $upload_css_dir_url."ultimate-post/ultp-css-{$id}.css";
231 if (file_exists( $reusable_dir_path )) {
232 $css_url = $css_dir_url . "ultimate-post/ultp-css-{$id}.css";
233 wp_enqueue_style( "ultp-post-{$id}", $css_url, array(), ULTP_VER, 'all' );
234 }else{
235 $css = get_post_meta($id, '_ultp_css', true);
236 if( $css ) {
237 wp_enqueue_style("ultp-post-{$id}", $css, false, ULTP_VER);
238 }
239 }
240 }
241
242 if ( file_exists( $css_dir_path ) ) {
243 $css_url = $css_dir_url . "ultimate-post/ultp-css-{$post_id}.css";
244 wp_enqueue_style( "ultp-post-{$post_id}", $css_url, array(), ULTP_VER, 'all' );
245 } else {
246 $css = get_post_meta($post_id, '_ultp_css', true);
247 if( $css ) {
248 wp_enqueue_style("ultp-post-{$post_id}", $css, false, ULTP_VER);
249 }
250 }
251 }
252 }
253
254
255 /**
256 * Get Global Plugin Settings
257 *
258 * @since v.1.0.0
259 * @param STRING | Key of the Option
260 * @return ARRAY | STRING
261 */
262 public function get_setting($key = ''){
263 $data = $GLOBALS['ultp_settings'];
264 if ($key != '') {
265 return isset($data[$key]) ? $data[$key] : '';
266 } else {
267 return $data;
268 }
269 }
270
271
272 /**
273 * Set Option Settings
274 *
275 * @since v.1.0.0
276 * @param STRING | Key of the Option (STRING), Value (STRING)
277 * @return NULL
278 */
279 public function set_setting($key = '', $val = '') {
280 if($key != ''){
281 $data = $GLOBALS['ultp_settings'];
282 $data[$key] = $val;
283 update_option('ultp_options', $data);
284 $GLOBALS['ultp_settings'] = $data;
285 }
286 }
287
288
289 /**
290 * Get Image HTML
291 *
292 * @since v.1.0.0
293 * @param | URL (STRING) | size (STRING) | class (STRING) | alt (STRING)
294 * @return STRING
295 */
296 public function get_image_html($url = '', $size = 'full', $class = '', $alt = ''){
297 $alt = $alt ? ' alt="'.$alt.'" ' : '';
298 if( function_exists('ultimate_post_pro') ){
299 $addon_enable = ultimate_post()->get_setting('addons_imageloading');
300 if($addon_enable == 'true'){
301 $class = $class ? ' class="ultp-lazy '.$class.'" ' : ' class="ultp-lazy" ';
302 return '<img loading="lazy" loading="lazy" '.$class.$alt.' '.ultimate_post()->get_size($size).' src="'.ultimate_post()->img_placeholder($size).'" data-src="'.$url.'"/>';
303 }else{
304 $class = $class ? ' class="'.$class.'" ' : '';
305 return '<img loading="lazy" '.$class.$alt.' src="'.$url.'" />';
306 }
307 } else {
308 $class = $class ? ' class="'.$class.'" ' : '';
309 return '<img loading="lazy" '.$class.$alt.' src="'.$url.'" />';
310 }
311 }
312
313
314 /**
315 * Get Image HTML
316 *
317 * @since v.1.0.0
318 * @param | Attach ID (STRING) | size (STRING) | class (STRING) | alt (STRING)
319 * @return STRING
320 */
321 public function get_image($attach_id, $size = 'full', $class = '', $alt = ''){
322 $alt = $alt ? ' alt="'.$alt.'" ' : '';
323 $size = ( ultimate_post()->get_setting('disable_image_size') == 'yes' && strpos($size, 'ultp_layout_') !== false ) ? 'full' : $size;
324 if( function_exists('ultimate_post_pro') ){
325 $addon_enable = ultimate_post()->get_setting('addons_imageloading');
326 if ($addon_enable == 'true') {
327 $class = $class ? ' class="ultp-lazy '.$class.'" ' : ' class="ultp-lazy" ';
328 return '<img loading="lazy" '.$class.$alt.' '.ultimate_post()->get_size($size).' src="'.ultimate_post()->img_placeholder($size).'" data-src="'.wp_get_attachment_image_url( $attach_id, $size ).'"/>';
329 } else {
330 $class = $class ? ' class="'.$class.'" ' : '';
331 return '<img loading="lazy" '.$class.$alt.' src="'.wp_get_attachment_image_url( $attach_id, $size ).'" />';
332 }
333 } else {
334 $class = $class ? ' class="'.$class.'" ' : '';
335 return '<img loading="lazy" '.$class.$alt.' src="'.wp_get_attachment_image_url( $attach_id, $size ).'" />';
336 }
337 }
338
339
340 /**
341 * Setup Initial Data Set
342 *
343 * @since v.1.0.0
344 * @return NULL
345 */
346 public function init_set_data(){
347 $data = get_option( 'ultp_options', array() );
348 $init_data = array(
349 'css_save_as' => 'wp_head',
350 'preloader_style' => 'style1',
351 'preloader_color' => '#1740f5',
352 'container_width' => '1140',
353 'editor_container' => 'full_width',
354 'hide_import_btn' => '',
355 'disable_image_size'=> '',
356 'ultp_templates' => 'true',
357 'ultp_elementor' => 'true'
358 );
359 if (empty($data)) {
360 update_option('ultp_options', $init_data);
361 $GLOBALS['ultp_settings'] = $init_data;
362 } else {
363 foreach ($init_data as $key => $single) {
364 if (!isset($data[$key])) {
365 $data[$key] = $single;
366 }
367 }
368 update_option('ultp_options', $data);
369 $GLOBALS['ultp_settings'] = $data;
370 }
371 }
372
373
374 /**
375 * Get Excerpt Text
376 *
377 * @since v.1.0.0
378 * @param | Post ID (STRING) | Limit (NUMBER)
379 * @return STRING
380 */
381 public function excerpt( $post_id, $limit = 55 ) {
382 return apply_filters( 'the_excerpt', wp_trim_words( get_the_content( $post_id ) , $limit ) );
383 }
384
385
386 /**
387 * Query Builder
388 *
389 * @since v.1.0.0
390 * @param ARRAY | Attribute of the Query
391 * @return ARRAY
392 */
393 public function get_query($attr) {
394 $query_args = array(
395 'posts_per_page' => isset($attr['queryNumber']) ? $attr['queryNumber'] : 3,
396 'post_type' => isset($attr['queryType']) ? $attr['queryType'] : 'post',
397 'orderby' => isset($attr['queryOrderBy']) ? $attr['queryOrderBy'] : 'date',
398 'order' => isset($attr['queryOrder']) ? $attr['queryOrder'] : 'desc',
399 'paged' => isset($attr['paged']) ? $attr['paged'] : 1,
400 'post_status' => 'publish'
401 );
402
403 if(isset($attr['queryOrderBy']) && isset($attr['metaKey'])){
404 if($attr['queryOrderBy'] == 'meta_value_num') {
405 $query_args['meta_key'] = $attr['metaKey'];
406 }
407 }
408
409 if(isset($attr['queryInclude']) && $attr['queryInclude']){
410 $query_args['post__in'] = explode(',', $attr['queryInclude']);
411 $query_args['ignore_sticky_posts'] = 1;
412 $query_args['orderby'] = 'post__in';
413 }
414
415 if(isset($attr['queryExclude']) && $attr['queryExclude']){
416 $query_args['post__not_in'] = explode(',', $attr['queryExclude']);
417 }
418
419 if(isset($attr['queryTax'])){
420 if(isset($attr['queryTaxValue'])){
421
422 $tax_value = (strlen($attr['queryTaxValue']) > 2) ? $attr['queryTaxValue'] : ($attr['queryTax'] == 'category' ? $attr['queryCat'] : $attr['queryTag']);
423
424 if(strlen($tax_value) > 2){
425 $var = array('relation'=>'OR');
426 foreach (json_decode($tax_value) as $val) {
427 $tax_name = $attr['queryTax'] == 'tag' ? 'post_tag' : $attr['queryTax']; // for compatibility
428 $var[] = array('taxonomy'=> $tax_name, 'field' => 'slug', 'terms' => $val );
429 }
430 if(count($var) > 1){
431 $query_args['tax_query'] = $var;
432 }
433 }
434 }
435 }
436
437 if(isset($attr['queryQuick'])){
438 if($attr['queryQuick'] != ''){
439 $query_args = ultimate_post()->get_quick_query($attr, $query_args);
440 }
441 }
442
443 if(isset($attr['queryOffset']) && $attr['queryOffset'] ){
444 if($query_args['paged'] > 1){
445 $offset_post = wp_get_recent_posts($query_args, OBJECT);
446 if( count($offset_post) > 0 ){
447 $offset = array();
448 for($x = count($offset_post); $x > count($offset_post) - $attr['queryOffset']; $x--){
449 $offset[] = $offset_post[$x-1]->ID;
450 }
451 $query_args['post__not_in'] = $offset;
452 }
453 }else{
454 $query_args['offset'] = isset($attr['queryOffset']) ? $attr['queryOffset'] : 0;
455 }
456 }
457
458 $query_args['wpnonce'] = wp_create_nonce( 'ultp-nonce' );
459
460 return $query_args;
461 }
462
463
464 /**
465 * Get Page Number
466 *
467 * @since v.1.0.0
468 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
469 * @return ARRAY
470 */
471 public function get_page_number($attr, $post_number) {
472 if($post_number > 0){
473 $post_per_page = isset($attr['queryNumber']) ? ($attr['queryNumber'] ? $attr['queryNumber'] : 1) : 3;
474 $pages = ceil($post_number/$post_per_page);
475 return $pages ? $pages : 1;
476 }else{
477 return 1;
478 }
479 }
480
481
482 /**
483 * Get Image Size
484 *
485 * @since v.1.0.0
486 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
487 * @return ARRAY
488 */
489 public function get_image_size() {
490 $sizes = get_intermediate_image_sizes();
491 $filter = array('full' => 'Full');
492 foreach ($sizes as $value) {
493 $filter[$value] = ucwords(str_replace(array('_', '-'), array(' ', ' '), $value));
494 }
495 return $filter;
496 }
497
498
499 /**
500 * Get All PostType Registered
501 *
502 * @since v.1.0.0
503 * @param | Attribute of the Query(ARRAY) | Post Number(ARRAY)
504 * @return ARRAY
505 */
506 public function get_post_type() {
507 $post_type = get_post_types( '', 'names' );
508 return array_diff($post_type, array( 'attachment', 'revision', 'nav_menu_item', 'custom_css', 'customize_changeset', 'oembed_cache', 'user_request', 'wp_block' ));
509 }
510
511
512 /**
513 * Get Pagination HTML
514 *
515 * @since v.1.0.0
516 * @param | pages (NUMBER) | Pagination Nav (STRING) | Pagination Text |
517 * @return STRING
518 */
519 public function pagination($pages = '', $paginationNav, $paginationText = '') {
520 $html = '';
521 $showitems = 3;
522 $paged = is_front_page() ? get_query_var('page') : get_query_var('paged');
523 $paged = $paged ? $paged : 1;
524 if($pages == '') {
525 global $wp_query;
526 $pages = $wp_query->max_num_pages;
527 if(!$pages) {
528 $pages = 1;
529 }
530 }
531 $data = ($paged>=3?[($paged-1),$paged,$paged+1]:[1,2,3]);
532
533 $paginationText = explode('|', $paginationText);
534
535 $prev_text = isset($paginationText[0]) ? $paginationText[0] : __("Previous", "ultimate-post");
536 $next_text = isset($paginationText[1]) ? $paginationText[1] : __("Next", "ultimate-post");
537
538 if(1 != $pages) {
539 $html .= '<ul class="ultp-pagination">';
540 $display_none = 'style="display:none"';
541 if($pages > 4) {
542 $html .= '<li class="ultp-prev-page-numbers" '.($paged==1?$display_none:"").'><a href="'.get_pagenum_link($paged-1).'">'.ultimate_post()->svg_icon('leftAngle2').' '.($paginationNav == 'textArrow' ? $prev_text : "").'</a></li>';
543 }
544 if($pages > 4){
545 $html .= '<li class="ultp-first-pages" '.($paged<2?$display_none:"").' data-current="1"><a href="'.get_pagenum_link(1).'">1</a></li>';
546 }
547 if($pages > 4){
548 $html .= '<li class="ultp-first-dot" '.($paged<2? $display_none : "").'><a href="#">...</a></li>';
549 }
550 foreach ($data as $i) {
551 if($pages >= $i){
552 $html .= ($paged == $i) ? '<li class="ultp-center-item pagination-active" data-current="'.$i.'"><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>':'<li class="ultp-center-item" data-current="'.$i.'"><a href="'.get_pagenum_link($i).'">'.$i.'</a></li>';
553 }
554 }
555 if($pages > 4){
556 $html .= '<li class="ultp-last-dot" '.($pages<=$paged+1?$display_none:"").'><a href="#">...</a></li>';
557 }
558 if($pages > 4){
559 $html .= '<li class="ultp-last-pages" '.($pages<=$paged+1?$display_none:"").' data-current="'.$pages.'"><a href="'.get_pagenum_link($pages).'">'.$pages.'</a></li>';
560 }
561 if ($paged != $pages) {
562 $html .= '<li class="ultp-next-page-numbers"><a href="'.get_pagenum_link($paged + 1).'">'.($paginationNav == 'textArrow' ? $next_text : "").ultimate_post()->svg_icon('rightAngle2').'</a></li>';
563 }
564 $html .= '</ul>';
565 }
566 return $html;
567 }
568
569
570 /**
571 * Get Excerpt Word
572 *
573 * @since v.1.0.0
574 * @param NUMBER | Character Length
575 * @return STRING
576 */
577 public function excerpt_word($charlength = 200) {
578 $html = '';
579 $charlength++;
580 $excerpt = get_the_excerpt();
581 if ( mb_strlen( $excerpt ) > $charlength ) {
582 $subex = mb_substr( $excerpt, 0, $charlength - 5 );
583 $exwords = explode( ' ', $subex );
584 $excut = - ( mb_strlen( $exwords[ count( $exwords ) - 1 ] ) );
585 if ( $excut < 0 ) {
586 $html = mb_substr( $subex, 0, $excut );
587 } else {
588 $html = $subex;
589 }
590 $html .= '...';
591 } else {
592 $html = $excerpt;
593 }
594 return $html;
595 }
596
597
598 /**
599 * Get Taxonomy Lists
600 *
601 * @since v.1.0.0
602 * @param STRING | Taxonomy Slug
603 * @return ARRAY
604 */
605 public function taxonomy( $prams = 'category' ) {
606 $data = array();
607 $terms = get_terms( $prams, array(
608 'hide_empty' => true,
609 ));
610 if( !empty($terms) ){
611 foreach ($terms as $val) {
612 $data[urldecode_deep($val->slug)] = $val->name;
613 }
614 }
615 return $data;
616 }
617
618
619 /**
620 * Get Taxonomy Data Lists
621 *
622 * @since v.1.0.0
623 * @param OBJECT | Taxonomy Object
624 * @return ARRAY
625 */
626 public function get_tax_data($terms) {
627 $temp = array();
628 $image = '';
629 $thumbnail_id = get_term_meta( $terms->term_id, 'ultp_category_image', true );
630 if( $thumbnail_id ){
631 $image = wp_get_attachment_url( $thumbnail_id );
632 }
633 $temp['url'] = get_term_link($terms);
634 $temp['name'] = $terms->name;
635 $temp['desc'] = $terms->description;
636 $temp['count'] = $terms->count;
637 $temp['image'] = $image;
638 $color = get_term_meta($terms->term_id, 'ultp_category_color', true);
639 $temp['color'] = $color == 1 ? '#1740f5' : $color;
640 return $temp;
641 }
642
643 public function get_category_data($catSlug, $number = 40, $type = '', $tax_slug = 'category') {
644 $data = array();
645 if($type == 'child'){
646 $image = '';
647 if (!empty($catSlug)) {
648 foreach ($catSlug as $cat) {
649 $parent_term = get_term_by('slug', $cat, $tax_slug);
650 if (!empty($parent_term)) {
651 $term_data = get_terms($tax_slug, array(
652 'hide_empty' => true,
653 'parent' => $parent_term->term_id
654 ));
655 if (!empty($term_data)) {
656 foreach ($term_data as $terms) {
657 $data[] = $this->get_tax_data($terms);
658 }
659 }
660 }
661 }
662 }
663 } else if ($type == 'parent') {
664 $term_data = get_terms( $tax_slug, array( 'hide_empty' => true, 'number' => $number, 'parent' => 0 ) );
665 if (!empty($term_data)) {
666 foreach ($term_data as $terms) {
667 $data[] = $this->get_tax_data($terms);
668 }
669 }
670 } else if ($type == 'custom') {
671 foreach ($catSlug as $cat) {
672 $terms = get_term_by('slug', $cat, $tax_slug);
673 if (!empty($terms)) {
674 $data[] = $this->get_tax_data($terms);
675 }
676 }
677 } else {
678 $term_data = get_terms($tax_slug, array('hide_empty' => true, 'number' => $number));
679 if (!empty($term_data)) {
680 foreach ($term_data as $terms) {
681 $data[] = $this->get_tax_data($terms);
682 }
683 }
684 }
685 return $data;
686 }
687
688
689 /**
690 * Get Next Previous HTML
691 *
692 * @since v.1.0.0
693 * @param OBJECT | Taxonomy Object
694 * @return STRING
695 */
696 public function next_prev() {
697 $html = '';
698 $html .= '<ul>';
699 $html .= '<li>';
700 $html .= '<a class="ultp-prev-action ultp-disable" href="#">';
701 $html .= ultimate_post()->svg_icon('leftAngle2').'<span class="screen-reader-text">'.__("Previous", "ultimate-post").'</span>';
702 $html .= '</a>';
703 $html .= '</li>';
704 $html .= '<li>';
705 $html .= '<a class="ultp-next-action">';
706 $html .= ultimate_post()->svg_icon('rightAngle2').'<span class="screen-reader-text">'.__("Next", "ultimate-post").'</span>';
707 $html .= '</a>';
708 $html .= '</li>';
709 $html .= '</ul>';
710 return $html;
711 }
712
713
714 /**
715 * Get Loading HTML
716 *
717 * @since v.1.0.0
718 * @param NULL
719 * @return STRING
720 */
721 public function loading(){
722 $html = '';
723 $style = ultimate_post()->get_setting('preloader_style');
724 if( $style == 'style2' ){
725 $html .= '<div class="ultp-loading-spinner" style="width:100%;height:100%"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>';//ultp-block-items-wrap
726 } else {
727 $html .= '<div class="ultp-loading-blocks" style="width:100%;height:100%;"><div style="left: 0;top: 0;animation-delay:0s;"></div><div style="left: 21px;top: 0;animation-delay:0.125s;"></div><div style="left: 42px;top: 0;animation-delay:0.25s;"></div><div style="left: 0;top: 21px;animation-delay:0.875s;"></div><div style="left: 42px;top: 21px;animation-delay:0.375s;"></div><div style="left: 0;top: 42px;animation-delay:0.75s;"></div><div style="left: 42px;top: 42px;animation-delay:0.625s;"></div><div style="left: 21px;top: 42px;animation-delay:0.5s;"></div></div>';
728 }
729 return '<div class="ultp-loading">'.$html.'</div>';
730 }
731
732
733 /**
734 * Get Filter HTML
735 *
736 * @since v.1.0.0
737 * @param | Filter Text (STRING) | Filter Type (STRING) | Filter Value (ARRAY) | Filter Cat (ARRAY) | Filter Tag (ARRAY) |
738 * @return STRING
739 */
740 public function filter($filterText = '', $filterType = '', $filterValue = '[]', $filterCat = [], $filterTag = []){
741 $html = '';
742 $html .= '<ul class="ultp-flex-menu">';
743
744 $filterType = $filterType == 'tag' ? 'post_tag' : $filterType; // for compatibility
745
746 $cat = $this->taxonomy($filterType);
747 if($filterText){
748 $html .= '<li class="filter-item"><a data-taxonomy="" href="#">'.$filterText.'</a></li>';
749 }
750
751 $filterValue = strlen($filterValue) > 2 ? $filterValue : ($filterType == 'category' ? $filterCat : $filterTag);
752
753 foreach (json_decode($filterValue) as $val) {
754 $html .= '<li class="filter-item"><a data-taxonomy="'.$val.'" href="#">'.(isset($cat[$val]) ? $cat[$val] : $val).'</a></li>';
755 }
756 $html .= '</ul>';
757 return $html;
758 }
759
760
761 /**
762 * Get SVG Icon
763 *
764 * @since v.1.0.0
765 * @param STRING | Icon Key
766 * @return STRING | Icon SVG
767 */
768 public function svg_icon($icons = ''){
769 $icon_lists = array(
770 'eye' => file_get_contents(ULTP_PATH.'assets/img/svg/eye.svg'),
771 'user' => file_get_contents(ULTP_PATH.'assets/img/svg/user.svg'),
772 'calendar' => file_get_contents(ULTP_PATH.'assets/img/svg/calendar.svg'),
773 'comment' => file_get_contents(ULTP_PATH.'assets/img/svg/comment.svg'),
774 'book' => file_get_contents(ULTP_PATH.'assets/img/svg/book.svg'),
775 'tag' => file_get_contents(ULTP_PATH.'assets/img/svg/tag.svg'),
776 'clock' => file_get_contents(ULTP_PATH.'assets/img/svg/clock.svg'),
777 'leftAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle.svg'),
778 'rightAngle' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle.svg'),
779 'leftAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/leftAngle2.svg'),
780 'rightAngle2' => file_get_contents(ULTP_PATH.'assets/img/svg/rightAngle2.svg'),
781 'leftArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/leftArrowLg.svg'),
782 'refresh' => file_get_contents(ULTP_PATH.'assets/img/svg/refresh.svg'),
783 'rightArrowLg' => file_get_contents(ULTP_PATH.'assets/img/svg/rightArrowLg.svg'),
784 );
785 if($icons){
786 return $icon_lists[ $icons ];
787 }
788 }
789
790 }
791