post_type = $post_type; } /** * Register the routes for the objects of the controller. */ public function register_custom_route($route) { $version = '2'; $namespace = 'craft/v' . $version; register_rest_route( $namespace, '/' . $route, [ array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ) ), ]); register_rest_route( $namespace, '/' . $route . '/(?P[\d]+)', [ array( 'methods' => WP_REST_Server::READABLE, 'callback' => array( $this, 'get_items' ) ), ]); } public function get_items( $request ) { $args = array( 'numberposts' => -1, 'post_type' => $this->post_type, // Order DOES NOT WORK because you're // returning the posts by id - DUH // 'orderby' => 'date', // 'order' => 'DESC' ); // Get parameters from request // /?limit= $params = $request->get_params(); if(intval($params['limit']) > 0) { $args['numberposts'] = intval($params['limit']); } if(intval($params['id']) > 0) { $args['include'] = array($params['id']); } // !: Add order asc/desc // !: Add orderby return new WP_REST_Response( $this->prepare_item_for_response($args), 200 ); } public function prepare_item_for_response( $args ) { $collection = array(); // https://developer.wordpress.org/reference/functions/get_posts/ foreach( get_posts($args) as $item ) { $filtered = default_post_format($item); // Get those Block! $filtered[blocks] = get_rearrange_blocks( parse_blocks( $item->post_content ) ); // Get media $media_ids = []; foreach (get_attached_media( '', $item->ID ) as $attached_media): array_push($media_ids, $attached_media->ID); endforeach; $filtered[attached] = $media_ids; // Galleries From blocks $galleries = []; foreach (get_attached_media( '', $item->ID ) as $attached_media): array_push($media_ids, $attached_media->ID); endforeach; $filtered[galleries] = get_ids_from_gallery_block( parse_blocks( $item->post_content ) ); $filtered[hero] = get_post_meta( $item->ID, 'hero_header', true ); $filtered[relatedto] = p2p_related_to($item->ID, $item->post_type); $collection[$item->ID] = $filtered; } wp_reset_postdata(); return $collection; } } ?>