Rest_Api
REST API implementation Add all meta fields to video post
Source
File: includes/libs/rest-api/rest-api.class.php
class Rest_Api{ /** * @var Rest_Endpoint_Factory */ private $routes; /** * Custom post type class reference * @var Post_Type */ private $cpt; /** * Constructor * * @param Post_Type $cpt */ public function __construct( Post_Type $cpt ){ // store custom post type reference $this->cpt = $cpt; // add init action add_action( 'rest_api_init', [ $this, 'api_init' ] ); $this->routes = new Rest_Endpoint_Factory(); } /** * REST API init callback */ public function api_init(){ $this->register_rest_field(); } /** * Register new Rest API fields */ private function register_rest_field(){ $objects = array(); $post_types = Plugin::instance()->get_registered_post_types()->get_post_types(); foreach( $post_types as $post_type ){ $objects[] = $post_type->get_post_type()->name; } register_rest_field( $objects, 'vimeo_video', [ 'get_callback' => [ $this, 'register_field' ], //'update_callback' => NULL, //'schema' => array() ] ); } /** * Post array returned by REST API * * @param array $object * * @return array|null */ public function register_field( $object ){ $video = Helper::get_video_post( $object['id'] ); $response = NULL; if( $video->is_video() ){ $response = [ 'video_id' => $video->video_id, 'uploader' => $video->uploader, 'uploader_uri' => $video->uploader_uri, 'published' => $video->published, '_published' => $video->_published, 'updated' => $video->updated, 'title' => $video->title, 'description' => $video->description, 'tags' => $video->tags, 'duration' => $video->duration, '_duration' => $video->_duration, 'thumbnails' => $video->thumbnails, 'stats' => $video->stats, 'privacy' => $video->privacy, // set by the plugin 'view_privacy' => $video->view_privacy, // the original Vimeo privacy setting 'embed_privacy' => $video->embed_privacy, // the original Vimeo privacy embed setting 'size' => $video->size, // Vimeo on Demand 'type' => $video->type, 'uri' => $video->uri, 'link' => $video->link ]; } /** * Run filter on returned result to allow third party to add additional fields. * * @param null|array $response The returned fields that wil be added to Rest API. * @param array $object The queried object. * @param Video_Post $video The video post object. */ return apply_filters( 'vimeotheque\rest_api\fields', $response, $object, $video ); } /** * @return Rest_Endpoint_Factory */ public function get_routes() { return $this->routes; } }
Methods
- __construct — Constructor
- api_init — REST API init callback
- get_routes
- register_field — Post array returned by REST API
- register_rest_field — Register new Rest API fields