PluginProbe
Post Grid Gutenberg Blocks – PostX / 2.2.5
Post Grid Gutenberg Blocks – PostX v2.2.5
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.2.5, at classes/REST_API.php

218 lines 8.1 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('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', 'specific_taxonomy', 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 $args = ultimate_post()->get_quick_query($prams, $args);
109 }
110 }
111
112 if(isset($prams['include'])){
113 $args['post__in'] = explode('__', esc_attr($prams['include']));
114 $args['ignore_sticky_posts'] = 1;
115 $args['orderby'] = 'post__in';
116 }
117
118 $data = [];
119 $loop = new WP_Query($args);
120
121 if($loop->have_posts()){
122 while($loop->have_posts()) {
123 $loop->the_post();
124 $var = array();
125 $post_id = get_the_ID();
126 $user_id = get_the_author_meta('ID');
127 $content_data = get_the_content();
128 $var['ID'] = $post_id;
129 $var['title'] = get_the_title();
130 $var['permalink'] = get_permalink();
131 $var['excerpt'] = strip_tags($content_data);
132 $var['excerpt_full']= strip_tags(get_the_excerpt());
133 $var['time'] = get_the_date();
134 $var['timeModified']= get_the_modified_date();
135 $var['post_time'] = human_time_diff(get_the_time('U'),current_time('U'));
136 $var['view'] = get_post_meta(get_the_ID(),'__post_views_count', true);
137 $var['comments'] = get_comments_number();
138 $var['author_link'] = get_author_posts_url($user_id);
139 $var['avatar_url'] = get_avatar_url($user_id);
140 $var['display_name']= get_the_author_meta('display_name');
141 $var['reading_time']= ceil(strlen($content_data)/1200).__(' min read', 'ultimate-post');
142
143 // image
144 if( has_post_thumbnail() ){
145 $thumb_id = get_post_thumbnail_id($post_id);
146 $image_sizes = ultimate_post()->get_image_size();
147 $image_src = array();
148 foreach ($image_sizes as $key => $value) {
149 $image_src[$key] = wp_get_attachment_image_src($thumb_id, $key, false)[0];
150 }
151 $var['image'] = $image_src;
152 }
153
154 // tag
155 $tag = get_the_terms($post_id, (isset($prams['tag'])?esc_attr($prams['tag']):'post_tag'));
156 if(!empty($tag)){
157 $v = array();
158 foreach ($tag as $val) {
159 $v[] = array('slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id));
160 }
161 $var['tag'] = $v;
162 }
163
164 // cat
165 $cat = get_the_terms($post_id, (isset($prams['cat'])?esc_attr($prams['cat']):'category'));
166 if(!empty($cat)){
167 $v = array();
168 foreach ($cat as $val) {
169 $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));
170 }
171 $var['category'] = $v;
172 }
173 $data[] = $var;
174 }
175 wp_reset_postdata();
176 }
177
178 return rest_ensure_response( $data );
179 }
180
181
182
183 function ultp_route_taxonomy_data($prams) {
184 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')){
185 return rest_ensure_response([]);
186 }
187
188 $all_post_type = ultimate_post()->get_post_type();
189 $data = array();
190 foreach ($all_post_type as $post_type_slug => $post_type ) {
191 $data_term = array();
192 $taxonomies = get_object_taxonomies($post_type_slug);
193 foreach ($taxonomies as $key => $taxonomy_slug) {
194 $taxonomy_value = get_terms(array(
195 'taxonomy' => $taxonomy_slug,
196 'hide_empty' => false
197 ));
198 if (!is_wp_error($taxonomy_value)) {
199 $data_tax = array();
200 foreach ($taxonomy_value as $k => $taxonomy) {
201 $data_tax[$taxonomy->slug] = $taxonomy->name;
202 }
203 $data_term[$taxonomy_slug] = $data_tax;
204 }
205 }
206 $data[$post_type_slug] = $data_term;
207 }
208 return rest_ensure_response($data);
209 // return rest_ensure_response(ultimate_post()->taxonomy($prams['taxonomy']));
210 }
211
212 function ultp_route_taxonomy_info_data($prams) {
213 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')) {
214 return rest_ensure_response([]);
215 }
216
217 return rest_ensure_response(ultimate_post()->taxonomy($prams['taxonomy']));
218 }