PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.1.4
Post Grid Gutenberg Blocks – PostX v2.1.4
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 / REST_API.php

REST_API.php in Post Grid Gutenberg Blocks – PostX 2.1.4, at classes/REST_API.php

211 lines 7.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 defined('ABSPATH') || exit;
3
4
5 // ------------- Custom Endpoint Start ----------
6
7 add_action( 'rest_api_init', 'ultp_register_route' );
8 function ultp_register_route() {
9 register_rest_route( 'ultp', 'posts', array(
10 'methods' => WP_REST_Server::READABLE,
11 'args' => array('post_type' => [], 'taxonomy' => [], 'include' => [], 'exclude' => [], 'order' => [], 'orderby' => [], 'count' => [], 'size' => [], 'tag' => [], 'cat' => [], 'meta_key' => [], 'queryQuick' => [], 'wpnonce' => []),
12 'callback' => 'ultp_route_post_data',
13 'permission_callback' => '__return_true'
14 )
15 );
16 register_rest_route( 'ultp', 'taxonomy', array(
17 'methods' => WP_REST_Server::READABLE,
18 'args' => array('taxonomy' => [], 'wpnonce' => []),
19 'callback' => 'ultp_route_taxonomy_data',
20 'permission_callback' => '__return_true'
21 )
22 );
23 register_rest_route( 'ultp', 'imagesize', array(
24 'methods' => WP_REST_Server::READABLE,
25 'args' => array('taxonomy' => [], 'wpnonce' => []),
26 'callback' => 'ultp_route_imagesize_data',
27 'permission_callback' => '__return_true'
28 )
29 );
30 register_rest_route( 'ultp', 'posttype', array(
31 'methods' => WP_REST_Server::READABLE,
32 'args' => array('wpnonce' => []),
33 'callback' => 'ultp_route_posttype_data',
34 'permission_callback' => '__return_true'
35 )
36 );
37 register_rest_route( 'ultp', 'tax_info', array(
38 'methods' => WP_REST_Server::READABLE,
39 'args' => array('taxonomy' => [], 'wpnonce' => []),
40 'callback' => 'ultp_route_taxonomy_info_data',
41 'permission_callback' => '__return_true'
42 )
43 );
44 }
45
46 function ultp_route_posttype_data() {
47 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce') && $local){
48 return ;
49 }
50
51 return ultimate_post()->get_post_type();
52 }
53
54 function ultp_route_imagesize_data() {
55 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce') && $local){
56 return ;
57 }
58
59 return ultimate_post()->get_image_size();
60 }
61
62 function ultp_route_post_data($prams,$local=false) {
63 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce') && $local){
64 return ;
65 }
66
67 // Query Builder
68 $args = array(
69 'post_type' => 'post',
70 'orderby' => 'date',
71 'post_status' => 'publish',
72 'order' => 'DESC',
73 );
74
75 if(isset($prams['count'])){ $args['posts_per_page'] = esc_attr($prams['count']); }
76 if(isset($prams['post_type'])){ $args['post_type'] = esc_attr( $prams['post_type'] ); }
77
78 if(isset($prams['taxonomy'])){ // taxonomy slug__val__slug__val
79 $tax_arr = array('relation' => 'OR');
80 $tax = explode('__', esc_attr($prams['taxonomy']));
81 if(!empty($tax)){
82 for($i=0; $i < count($tax) ; $i++){
83 if($i%2 == 0){
84 $tax_arr[] = array('taxonomy'=>$tax[$i], 'field' => 'slug', 'terms' => array($tax[$i+1]));
85 }
86 }
87 }
88 if(!empty($tax_arr)){
89 $args['tax_query'] = $tax_arr;
90 }
91 }
92
93 if(isset($prams['exclude'])){ $args['post__not_in'] = explode('__', esc_attr($prams['exclude'])); }
94 if(isset($prams['orderby'])){ $args['orderby'] = esc_attr($prams['orderby']); }
95 if(isset($prams['order'])){ $args['order'] = esc_attr($prams['order']); }
96 if(isset($prams['offset'])){ $args['offset'] = esc_attr($prams['offset']); }
97 if(isset($prams['paged'])){ $args['paged'] = esc_attr($prams['paged']); }
98
99 if(isset($prams['orderby']) && isset($prams['meta_key'])){
100 if($prams['orderby'] == 'meta_value_num') {
101 $args['meta_key'] = $prams['meta_key'];
102 $args['meta_type'] = 'NUMERIC';
103 }
104 }
105
106 if(isset($prams['queryQuick'])){
107 if($prams['queryQuick'] != ''){
108 if(function_exists('ultimate_post_pro')){
109 $args = ultimate_post_pro()->get_quick_query($prams, $args);
110 }
111 }
112 }
113
114 if(isset($prams['include'])){
115 $args['post__in'] = explode('__', esc_attr($prams['include']));
116 $args['ignore_sticky_posts'] = 1;
117 $args['orderby'] = 'post__in';
118 }
119
120 $data = [];
121 $loop = new WP_Query($args);
122
123 if($loop->have_posts()){
124 while($loop->have_posts()) {
125 $loop->the_post();
126 $var = array();
127 $post_id = get_the_ID();
128 $user_id = get_the_author_meta('ID');
129 $content_data = get_the_content();
130 $var['ID'] = $post_id;
131 $var['title'] = get_the_title();
132 $var['permalink'] = get_permalink();
133 $var['excerpt'] = strip_tags($content_data);
134 $var['excerpt_full']= strip_tags(get_the_excerpt());
135 $var['time'] = get_the_date();
136 $var['timeModified']= get_the_modified_date();
137 $var['post_time'] = human_time_diff(get_the_time('U'),current_time('U'));
138 $var['view'] = get_post_meta(get_the_ID(),'__post_views_count', true);
139 $var['comments'] = get_comments_number();
140 $var['author_link'] = get_author_posts_url($user_id);
141 $var['avatar_url'] = get_avatar_url($user_id);
142 $var['display_name']= get_the_author_meta('display_name');
143 $var['reading_time']= ceil(strlen($content_data)/1200).__(' min read', 'ultimate-post');
144
145 // image
146 if( has_post_thumbnail() ){
147 $thumb_id = get_post_thumbnail_id($post_id);
148 $image_sizes = ultimate_post()->get_image_size();
149 $image_src = array();
150 foreach ($image_sizes as $key => $value) {
151 $image_src[$key] = wp_get_attachment_image_src($thumb_id, $key, false)[0];
152 }
153 $var['image'] = $image_src;
154 }
155
156 // tag
157 $tag = get_the_terms($post_id, (isset($prams['tag'])?esc_attr($prams['tag']):'post_tag'));
158 if(!empty($tag)){
159 $v = array();
160 foreach ($tag as $val) {
161 $v[] = array('slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id));
162 }
163 $var['tag'] = $v;
164 }
165
166 // cat
167 $cat = get_the_terms($post_id, (isset($prams['cat'])?esc_attr($prams['cat']):'category'));
168 if(!empty($cat)){
169 $v = array();
170 foreach ($cat as $val) {
171 $v[] = array('slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id), 'color' => get_term_meta($val->term_id, 'ultp_category_color', true));
172 }
173 $var['category'] = $v;
174 }
175 $data[] = $var;
176 }
177 wp_reset_postdata();
178 }
179
180 return rest_ensure_response( $data );
181 }
182
183
184
185 function ultp_route_taxonomy_data($prams) {
186 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')){
187 return rest_ensure_response([]);
188 }
189 return rest_ensure_response(ultimate_post()->taxonomy($prams['taxonomy']));
190 }
191
192 function ultp_route_taxonomy_info_data($prams) {
193 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')){
194 return rest_ensure_response([]);
195 }
196
197 $data = array();
198 $terms = get_terms( $prams, array(
199 'hide_empty' => true,
200 ));
201 if( !empty($terms) ){
202 foreach ($terms as $val) {
203 $data['name'] = $val->name;
204 $data['count'] = $val->count;
205 $data['url'] = get_term_link($val->term_id);
206 $data['color'] = get_term_meta($val->term_id, '_background', true);
207 }
208 }
209
210 return rest_ensure_response($data);
211 }