Ver código fonte

refac: tweaking names | added standard post format helper

tags/0.9.0
J 6 anos atrás
pai
commit
a723bf0a11

+ 4
- 2
plugins/cia-endpoints/cia-end-points.php Ver arquivo

@@ -51,6 +51,8 @@ add_action( 'rest_api_init', function () {
51 51
  * Craft in America custom sort_types
52 52
  */
53 53
 add_action( 'rest_api_init', function () {
54
-    $media_controller = new Make_Sort_By('by_alpha', 'artist');
55
-    $media_controller->register_custom_route('sort/by-alpha');
54
+    $media_controller = new Make_Sort_By('artist', 'by_alpha');
55
+    $media_controller->register_custom_route('by-alpha');
56
+    $media_controller = new Make_Sort_By('artist', 'by_material');
57
+    $media_controller->register_custom_route('by-material');
56 58
 });

+ 17
- 24
plugins/cia-endpoints/includes/class.make-endpoint.php Ver arquivo

@@ -2,6 +2,7 @@
2 2
 
3 3
 include('reformat-blocks.php');
4 4
 include('related-items.php');
5
+include('formats.php');
5 6
 
6 7
 class Make_Endpoint_For extends WP_REST_Controller {
7 8
     private $post_type;
@@ -30,43 +31,35 @@ class Make_Endpoint_For extends WP_REST_Controller {
30 31
     }
31 32
 
32 33
     public function get_items( $request ) {
34
+        $args = array( 'numberposts' => -1, 'post_type' => $this->post_type );
35
+        
33 36
         // Get parameters from request
34 37
         // /<id>?limit=<num>
35 38
         $params = $request->get_params();
36
-
37
-        $args = array( 'numberposts' => -1, 'post_type' => $this->post_type );
38 39
         if(intval($params['limit']) > 0) { $args['numberposts'] = intval($params['limit']); }
39 40
         if(intval($params['id']) > 0) { $args['include'] = array($params['id']); }
40 41
         // !: Add order asc/desc
41 42
         // !: Add orderby
43
+        
44
+        return new WP_REST_Response( $this->prepare_item_for_response($args), 200 );
45
+    }
42 46
 
47
+    public function prepare_item_for_response( $args) {
43 48
         $collection = array();
44 49
         foreach( get_posts($args) as $item ) {
50
+            $filtered = default_post_format($item);
51
+            
45 52
             // Get those Block!
46
-            $item->blocks = parse_blocks( $item->post_content );
47
-            $data = $this->prepare_item_for_response( $item, $request );
48
-            $collection[$item->ID] = $this->prepare_response_for_collection( $data );
53
+            $filtered[blocks] = get_rearrange_blocks(
54
+                parse_blocks( $item->post_content )
55
+            );
56
+            $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true );
57
+            $filtered[relatedto] = p2p_related_to($item->ID, $item->post_type);
58
+
59
+            $collection[$item->ID] = $filtered;
49 60
         }
50 61
         wp_reset_postdata();
51
-        return new WP_REST_Response( $collection, 200 );
52
-    }
53
-
54
-    public function prepare_item_for_response( $item, $request ) {
55
-        $filtered = array();
56
-        $filtered[id] = $item->ID;
57
-        $filtered[slug] = $item->post_name;
58
-        $filtered[type] = $item->post_type;
59
-        $filtered[title] = $item->post_title;
60
-        $filtered[excerpt] = $item->post_excerpt;
61
-        $filtered[date] = $item->post_date;
62
-        $filtered[content] = $item->post_content;
63
-        $filtered[blocks] = get_rearrange_blocks($item->blocks);
64
-        $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true );
65
-        $filtered[relatedto] = p2p_related_to($item->ID, $item->post_type);
66
-        // Log the request with PHP Console
67
-        if ( class_exists( 'PC' ) ) PC::debug( $item, 'Blocks' );
68
-        
69
-        return $filtered;
62
+        return $collection;
70 63
     }
71 64
 }
72 65
 

+ 23
- 18
plugins/cia-endpoints/includes/class.make-sortby.php Ver arquivo

@@ -2,7 +2,7 @@
2 2
 class Make_Sort_By extends WP_REST_Controller {
3 3
     private $post_type;
4 4
     private $sort_type;
5
-    function __construct($sort_type, $post_type) {
5
+    function __construct($post_type, $sort_type) {
6 6
         $this->post_type = $post_type;
7 7
         $this->sort_type = $sort_type;
8 8
     }
@@ -12,16 +12,15 @@ class Make_Sort_By extends WP_REST_Controller {
12 12
     public function register_custom_route($route) {
13 13
         $version = '2';
14 14
         $namespace = 'craft/v' . $version;
15
-        register_rest_route( $namespace, '/' . $route . '/' . $this->post_type, [
15
+        register_rest_route( $namespace, '/sort' . '/' . $this->post_type . 's/' . $route, [
16 16
             array(
17 17
                 'methods'  => WP_REST_Server::READABLE,
18 18
                 'callback' => array( $this, $this->sort_type )
19 19
             ),
20 20
         ]);
21 21
     }
22
-
22
+    
23 23
     public function by_alpha( $request ) {
24
-        $params = $request->get_params();
25 24
         global $wpdb;
26 25
         $res = $wpdb->get_results($wpdb->prepare(
27 26
             "SELECT * FROM wp_posts
@@ -31,22 +30,28 @@ class Make_Sort_By extends WP_REST_Controller {
31 30
             $this->post_type
32 31
         ));
33 32
         wp_reset_postdata();
33
+        
34
+        return new WP_REST_Response( $this->prepare_items_for_reponse($res), 200 );
35
+    }
36
+
37
+    public function by_material( $request ) {
38
+        global $wpdb;
39
+        // !: Make this a real query
40
+        $res = $wpdb->get_results($wpdb->prepare(
41
+            "SELECT * FROM wp_posts
42
+            WHERE post_type = %s 
43
+            AND post_status='publish'",
44
+            $this->post_type
45
+        ));
46
+        wp_reset_postdata();
34 47
 
48
+        return new WP_REST_Response( $this->prepare_items_for_reponse($res), 200 );
49
+    }
50
+
51
+    public function prepare_items_for_reponse( $items ) {
35 52
         $collection = array();
36
-    
37
-        forEach( $res as $key=>$item ) {
38
-            $filtered = array();
39
-            $filtered[id] = $item->ID;
40
-            $filtered[slug] = $item->post_name;
41
-            $filtered[type] = $item->post_type;
42
-            $filtered[title] = $item->post_title;
43
-            $filtered[excerpt] = $item->post_excerpt;
44
-            $filtered[date] = $item->post_date;
45
-            $filtered[content] = $item->post_content;
46
-            $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true );
47
-            $collection[$key] = $filtered;
48
-        };
49
-        return new WP_REST_Response( $collection, 200 );
53
+        forEach( $items as $key => $item ) $collection[$key] = default_post_format($item);
54
+        return $collection;
50 55
     }
51 56
 }
52 57
 

+ 18
- 0
plugins/cia-endpoints/includes/formats.php Ver arquivo

@@ -0,0 +1,18 @@
1
+<?php
2
+
3
+function default_post_format( $item ) {
4
+    $filtered = array();
5
+    $filtered[id] = $item->ID;
6
+    $filtered[slug] = $item->post_name;
7
+    $filtered[type] = $item->post_type;
8
+    $filtered[title] = $item->post_title;
9
+    $filtered[excerpt] = $item->post_excerpt;
10
+    $filtered[date] = $item->post_date;
11
+    $filtered[content] = $item->post_content;
12
+
13
+    $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true );
14
+    
15
+    return $filtered;
16
+}
17
+
18
+?>

+ 3
- 15
plugins/cia-endpoints/includes/related-items.php Ver arquivo

@@ -1,5 +1,7 @@
1 1
 <?php
2 2
 
3
+include(formats.php);
4
+
3 5
 function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
4 6
     $related_to_ids = array_map(function($post) { 
5 7
         return (int)$post->p2p_to;
@@ -17,21 +19,7 @@ function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
17 19
 function prepare_related_items($args) {
18 20
     // Rearrange what fields get shown
19 21
     $collection = array();
20
-    
21
-    forEach( get_posts($args) as $item ) {
22
-        $filtered = array();
23
-        $filtered[id] = $item->ID;
24
-        $filtered[slug] = $item->post_name;
25
-        $filtered[type] = $item->post_type;
26
-        $filtered[title] = $item->post_title;
27
-        $filtered[excerpt] = $item->post_excerpt;
28
-        $filtered[date] = $item->post_date;
29
-        $filtered[content] = $item->post_content;
30
-        $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true );
31
-        $collection[$item->ID] = $filtered;
32
-    };
33
-    wp_reset_postdata();
34
-    
22
+    forEach( get_posts($args) as $item ) $collection[$item->ID] = default_post_format($item);
35 23
     return $collection;
36 24
 }
37 25
 

Carregando…
Cancelar
Salvar