/** * Plugin Name: WP REST API - Meta Endpoints * Description: Meta endpoints for the WP REST API * Author: WP REST API Team * Author URI: http://wp-api.org * Version: 0.1.0 * Plugin URI: https://github.com/WP-API/wp-api-meta-endpoints * License: GPL2+ */ function meta_rest_api_init() { if (class_exists('WP_REST_Controller') && !class_exists('WP_REST_Meta_Controller')) { require_once dirname(__FILE__) . '/lib/class-wp-rest-meta-controller.php'; } if (class_exists('WP_REST_Controller') && !class_exists('WP_REST_Meta_Posts_Controller')) { require_once dirname(__FILE__) . '/lib/class-wp-rest-meta-posts-controller.php'; } if (class_exists('WP_REST_Controller') && !class_exists('WP_REST_Meta_Users_Controller')) { require_once dirname(__FILE__) . '/lib/class-wp-rest-meta-users-controller.php'; } if (class_exists('WP_REST_Controller') && !class_exists('WP_REST_Meta_Comments_Controller')) { require_once dirname(__FILE__) . '/lib/class-wp-rest-meta-comments-controller.php'; } if (class_exists('WP_REST_Controller') && !class_exists('WP_REST_Meta_Terms_Controller')) { require_once dirname(__FILE__) . '/lib/class-wp-rest-meta-terms-controller.php'; } foreach (get_post_types(array('show_in_rest' => true), 'objects') as $post_type) { if (post_type_supports($post_type->name, 'custom-fields')) { $meta_controller = new WP_REST_Meta_Posts_Controller($post_type->name); $meta_controller->register_routes(); } } foreach (get_taxonomies(array('show_in_rest' => true), 'objects') as $taxonomy) { $terms_meta_controller = new WP_REST_Meta_Terms_Controller($taxonomy->name); $terms_meta_controller->register_routes(); } $user_meta_controller = new WP_REST_Meta_Users_Controller(); $user_meta_controller->register_routes(); $comment_meta_controller = new WP_REST_Meta_Comments_Controller(); $comment_meta_controller->register_routes(); }
/** * Register default REST API routes */ function create_initial_rest_routes() { foreach (get_post_types(array('show_in_rest' => true), 'objects') as $post_type) { $class = !empty($post_type->rest_controller_class) ? $post_type->rest_controller_class : 'WP_REST_Posts_Controller'; if (!class_exists($class)) { continue; } $controller = new $class($post_type->name); if (!is_subclass_of($controller, 'WP_REST_Controller')) { continue; } $controller->register_routes(); if (post_type_supports($post_type->name, 'custom-fields')) { $meta_controller = new WP_REST_Meta_Posts_Controller($post_type->name); $meta_controller->register_routes(); } if (post_type_supports($post_type->name, 'revisions')) { $revisions_controller = new WP_REST_Revisions_Controller($post_type->name); $revisions_controller->register_routes(); } foreach (get_object_taxonomies($post_type->name, 'objects') as $taxonomy) { if (empty($taxonomy->show_in_rest)) { continue; } $posts_terms_controller = new WP_REST_Posts_Terms_Controller($post_type->name, $taxonomy->name); $posts_terms_controller->register_routes(); } } /* * Post types */ $controller = new WP_REST_Post_Types_Controller(); $controller->register_routes(); /* * Post statuses */ $controller = new WP_REST_Post_Statuses_Controller(); $controller->register_routes(); /* * Taxonomies */ $controller = new WP_REST_Taxonomies_Controller(); $controller->register_routes(); /* * Terms */ foreach (get_taxonomies(array('show_in_rest' => true), 'object') as $taxonomy) { $class = !empty($taxonomy->rest_controller_class) ? $taxonomy->rest_controller_class : 'WP_REST_Terms_Controller'; if (!class_exists($class)) { continue; } $controller = new $class($taxonomy->name); if (!is_subclass_of($controller, 'WP_REST_Controller')) { continue; } $controller->register_routes(); } /* * Users */ $controller = new WP_REST_Users_Controller(); $controller->register_routes(); /** * Comments */ $controller = new WP_REST_Comments_Controller(); $controller->register_routes(); }