Using Single REST API Endpoint for Multiple Post Types
Learn to modify the custom search route to work with multiple post types.
We'll cover the following...
In the last lesson, we created a custom query to fetch posts of teacher post type and returned them on the custom REST API endpoint. The school_search_results function is reproduced below:
<?phpfunction school_search_results(){$args = array('post_type' => 'teacher');$teacherPosts = new WP_Query($args);$teacherResults = array();while($teacherPosts->have_posts()){$teacherPosts->the_post();array_push($teacherResults, array('title' => get_the_title(),'permalink' => get_the_permalink())); }return $teacherResults;}
To query for multiple post types, we can provide an array of all the post types we want our query to fetch. Also remember to set posts_per_page to -1 to view all the results otherwise only ten results will be displayed.
Since we are querying for multiple post types, we have changed the variables $teacherPosts to $allPosts and $teacherResults to $allResults.
<?phpfunction school_search_results(){$args = array('post_type' => array('post', 'page', 'course', 'teacher', 'event'),'posts_per_page' => -1);$allPosts = new WP_Query($args);$allResults = array();while($allPosts -> have_posts()){$allPosts -> the_post();array_push($allResults, array('title' => get_the_title(),'permalink' => get_the_permalink()));}return $allResults;}
With the above array of arguments, the WP_Query will fetch results for all posts, pages, courses, teachers and events from the database. The results can be viewed at our search route /wp-json/excellence/v1/search.
Sorting results based on post type
The ...