Skip to content

Instantly share code, notes, and snippets.

@domosedov
Created July 3, 2020 14:39
Show Gist options
  • Save domosedov/d08ca0d8f54c83251014a2e800636bba to your computer and use it in GitHub Desktop.
Save domosedov/d08ca0d8f54c83251014a2e800636bba to your computer and use it in GitHub Desktop.
Template for wordpress rest api controller
<?php
namespace Your\Namespace;
use WP_REST_Server;
class Todos extends \WP_REST_Controller
{
public function __construct()
{
$this->namespace = '';
$this->rest_base = '';
}
public function register_routes()
{
register_rest_route($this->namespace, "/$this->rest_base", [
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_items'],
'permission_callback' => [$this, 'get_items_permissions_check'],
'args' => [
'type' => [
'description' => '',
'type' => 'string',
'default' => '',
'validate_callback' => [$this, 'validate_args'],
'required' => true
],
'page' => [
'description' => '',
'type' => 'integer',
'default' => 1,
'validate_callback' => [$this, 'validate_args'],
'required' => false
],
'per_page' => [
'description' => '',
'type' => 'integer',
'default' => 0,
'validate_callback' => [$this, 'validate_args'],
'required' => false
],
]
],
[
'methods' => WP_REST_Server::CREATABLE,
'callback' => [$this, 'create_item'],
'permission_callback' => [$this, 'create_item_permissions_check'],
'args' => [
'receiver_id' => [
'description' => '',
'type' => 'integer',
'sanitize_callback' => [$this, 'sanitize_args'],
'validate_callback' => [$this, 'validate_args'],
'required' => true
],
'title' => [
'description' => '',
'type' => 'string',
'default' => '',
'sanitize_callback' => [$this, 'sanitize_args'],
'validate_callback' => [$this, 'validate_args'],
'required' => true
],
'body' => [
'description' => '',
'type' => 'string',
'default' => '',
'sanitize_callback' => [$this, 'sanitize_args'],
'validate_callback' => [$this, 'validate_args'],
'required' => true
]
]
]
]);
register_rest_route($this->namespace, "/$this->rest_base/(?P<id>[\w]+)", [
'args' => [
'id' => [
'description' => '',
'type' => 'integer',
'validate_callback' => [$this, 'validate_args']
],
'action' => [
'description' => '',
'type' => 'string',
'validate_callback' => [$this, 'validate_args'],
'sanitize_callback' => [$this, 'sanitize_args'],
'required' => false
]
],
[
'methods' => WP_REST_Server::READABLE,
'callback' => [$this, 'get_item'],
'permission_callback' => [$this, 'get_item_permissions_check'],
],
[
'methods' => WP_REST_Server::EDITABLE,
'callback' => [$this, 'update_item'],
'permission_callback' => [$this, 'update_item_permissions_check'],
],
[
'methods' => WP_REST_Server::DELETABLE,
'callback' => [$this, 'delete_item'],
'permission_callback' => [$this, 'delete_item_permissions_check'],
]
]);
}
public function sanitize_args($value, $requset, $param)
{
}
public function validate_args($value, $requset, $param)
{
}
public function get_items_permissions_check($request)
{
return parent::get_items_permissions_check($request); // TODO: Change the autogenerated stub
}
public function get_items($request)
{
return parent::get_items($request); // TODO: Change the autogenerated stub
}
public function get_item_permissions_check($request)
{
return parent::get_item_permissions_check($request); // TODO: Change the autogenerated stub
}
public function get_item($request)
{
return parent::get_item($request); // TODO: Change the autogenerated stub
}
public function create_item_permissions_check($request)
{
return parent::create_item_permissions_check($request); // TODO: Change the autogenerated stub
}
public function create_item($request)
{
return parent::create_item($request); // TODO: Change the autogenerated stub
}
public function update_item_permissions_check($request)
{
return parent::update_item_permissions_check($request); // TODO: Change the autogenerated stub
}
public function update_item($request)
{
return parent::update_item($request); // TODO: Change the autogenerated stub
}
public function delete_item_permissions_check($request)
{
return parent::delete_item_permissions_check($request); // TODO: Change the autogenerated stub
}
public function delete_item($request)
{
return parent::delete_item($request); // TODO: Change the autogenerated stub
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment