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

210 lines 7.5 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['post_time'] = human_time_diff(get_the_time('U'),current_time('U'));
137 $var['view'] = get_post_meta(get_the_ID(),'__post_views_count', true);
138 $var['comments'] = get_comments_number();
139 $var['author_link'] = get_author_posts_url($user_id);
140 $var['avatar_url'] = get_avatar_url($user_id);
141 $var['display_name']= get_the_author_meta('display_name');
142 $var['reading_time']= ceil(strlen($content_data)/1200).__(' min read', 'ultimate-post');
143
144 // image
145 if( has_post_thumbnail() ){
146 $thumb_id = get_post_thumbnail_id($post_id);
147 $image_sizes = ultimate_post()->get_image_size();
148 $image_src = array();
149 foreach ($image_sizes as $key => $value) {
150 $image_src[$key] = wp_get_attachment_image_src($thumb_id, $key, false)[0];
151 }
152 $var['image'] = $image_src;
153 }
154
155 // tag
156 $tag = get_the_terms($post_id, (isset($prams['tag'])?esc_attr($prams['tag']):'post_tag'));
157 if(!empty($tag)){
158 $v = array();
159 foreach ($tag as $val) {
160 $v[] = array('slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id));
161 }
162 $var['tag'] = $v;
163 }
164
165 // cat
166 $cat = get_the_terms($post_id, (isset($prams['cat'])?esc_attr($prams['cat']):'category'));
167 if(!empty($cat)){
168 $v = array();
169 foreach ($cat as $val) {
170 $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));
171 }
172 $var['category'] = $v;
173 }
174 $data[] = $var;
175 }
176 wp_reset_postdata();
177 }
178
179 return rest_ensure_response( $data );
180 }
181
182
183
184 function ultp_route_taxonomy_data($prams) {
185 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')){
186 return rest_ensure_response([]);
187 }
188 return rest_ensure_response(ultimate_post()->taxonomy($prams['taxonomy']));
189 }
190
191 function ultp_route_taxonomy_info_data($prams) {
192 if (!wp_verify_nonce($_REQUEST['wpnonce'], 'ultp-nonce')){
193 return rest_ensure_response([]);
194 }
195
196 $data = array();
197 $terms = get_terms( $prams, array(
198 'hide_empty' => true,
199 ));
200 if( !empty($terms) ){
201 foreach ($terms as $val) {
202 $data['name'] = $val->name;
203 $data['count'] = $val->count;
204 $data['url'] = get_term_link($val->term_id);
205 $data['color'] = get_term_meta($val->term_id, '_background', true);
206 }
207 }
208
209 return rest_ensure_response($data);
210 }