Quellcode durchsuchen

refac: tweaking names | added standard post format helper

tags/0.9.0
J vor 6 Jahren
Ursprung
Commit
a723bf0a11

+ 4
- 2
plugins/cia-endpoints/cia-end-points.php Datei anzeigen

51
  * Craft in America custom sort_types
51
  * Craft in America custom sort_types
52
  */
52
  */
53
 add_action( 'rest_api_init', function () {
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 Datei anzeigen

2
 
2
 
3
 include('reformat-blocks.php');
3
 include('reformat-blocks.php');
4
 include('related-items.php');
4
 include('related-items.php');
5
+include('formats.php');
5
 
6
 
6
 class Make_Endpoint_For extends WP_REST_Controller {
7
 class Make_Endpoint_For extends WP_REST_Controller {
7
     private $post_type;
8
     private $post_type;
30
     }
31
     }
31
 
32
 
32
     public function get_items( $request ) {
33
     public function get_items( $request ) {
34
+        $args = array( 'numberposts' => -1, 'post_type' => $this->post_type );
35
+        
33
         // Get parameters from request
36
         // Get parameters from request
34
         // /<id>?limit=<num>
37
         // /<id>?limit=<num>
35
         $params = $request->get_params();
38
         $params = $request->get_params();
36
-
37
-        $args = array( 'numberposts' => -1, 'post_type' => $this->post_type );
38
         if(intval($params['limit']) > 0) { $args['numberposts'] = intval($params['limit']); }
39
         if(intval($params['limit']) > 0) { $args['numberposts'] = intval($params['limit']); }
39
         if(intval($params['id']) > 0) { $args['include'] = array($params['id']); }
40
         if(intval($params['id']) > 0) { $args['include'] = array($params['id']); }
40
         // !: Add order asc/desc
41
         // !: Add order asc/desc
41
         // !: Add orderby
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
         $collection = array();
48
         $collection = array();
44
         foreach( get_posts($args) as $item ) {
49
         foreach( get_posts($args) as $item ) {
50
+            $filtered = default_post_format($item);
51
+            
45
             // Get those Block!
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
         wp_reset_postdata();
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 Datei anzeigen

2
 class Make_Sort_By extends WP_REST_Controller {
2
 class Make_Sort_By extends WP_REST_Controller {
3
     private $post_type;
3
     private $post_type;
4
     private $sort_type;
4
     private $sort_type;
5
-    function __construct($sort_type, $post_type) {
5
+    function __construct($post_type, $sort_type) {
6
         $this->post_type = $post_type;
6
         $this->post_type = $post_type;
7
         $this->sort_type = $sort_type;
7
         $this->sort_type = $sort_type;
8
     }
8
     }
12
     public function register_custom_route($route) {
12
     public function register_custom_route($route) {
13
         $version = '2';
13
         $version = '2';
14
         $namespace = 'craft/v' . $version;
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
             array(
16
             array(
17
                 'methods'  => WP_REST_Server::READABLE,
17
                 'methods'  => WP_REST_Server::READABLE,
18
                 'callback' => array( $this, $this->sort_type )
18
                 'callback' => array( $this, $this->sort_type )
19
             ),
19
             ),
20
         ]);
20
         ]);
21
     }
21
     }
22
-
22
+    
23
     public function by_alpha( $request ) {
23
     public function by_alpha( $request ) {
24
-        $params = $request->get_params();
25
         global $wpdb;
24
         global $wpdb;
26
         $res = $wpdb->get_results($wpdb->prepare(
25
         $res = $wpdb->get_results($wpdb->prepare(
27
             "SELECT * FROM wp_posts
26
             "SELECT * FROM wp_posts
31
             $this->post_type
30
             $this->post_type
32
         ));
31
         ));
33
         wp_reset_postdata();
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
         $collection = array();
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 Datei anzeigen

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 Datei anzeigen

1
 <?php
1
 <?php
2
 
2
 
3
+include(formats.php);
4
+
3
 function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
5
 function grab_ids_related_to_and_from($id_to_remove, $p2p_res) {
4
     $related_to_ids = array_map(function($post) { 
6
     $related_to_ids = array_map(function($post) { 
5
         return (int)$post->p2p_to;
7
         return (int)$post->p2p_to;
17
 function prepare_related_items($args) {
19
 function prepare_related_items($args) {
18
     // Rearrange what fields get shown
20
     // Rearrange what fields get shown
19
     $collection = array();
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
     return $collection;
23
     return $collection;
36
 }
24
 }
37
 
25
 

Laden…
Abbrechen
Speichern