WordPress REST API
criando rotas específicas para o seu projeto
Marcelo Villela Gusmão
marcelovillelagusmao@gmail.com
API
Application Programming Interface (Interface de Programação de Aplicações)
Conjunto de regras que permite com que programas
(ou partes de um mesmo programa) conversem entre si sem que seja necessário conhecer profundamente o funcionamento de cada um deles.
WordPress APIs
Conjunto composto por grupos de funções responsáveis por um conjunto específico de funcionalidades.
Options API
Widget API
Shortcode API
Theme Customization API
e mais...
function customize_register($wp_customize) {
$wp_customize->add_section('mvg_contact_info', array(
'title' => 'Informações de contato',
'priority' => 120,
));
}
add_action('customize_register', 'customize_register');
REST API
Representational State Transfer (Transferência de Estado Representacional) é uma abstração da arquitetura da World Wide Web e utiliza principalmente o sistema de requisição e resposta através dos verbos HTTP.


Verbos HTTP:
GET
POST
PUT
DELETE
Códigos HTTP:
200
300
400
500
Rotas e endpoints
https://dominio.com.br/wp-json/wp/v2/posts
domínio
base
rota
GET | lista todos os posts
verbo
endpoint
POST | cria um novo post
verbo
endpoint
Endpoints são funções disponíveis através da API REST.
Rotas são os nomes para se acessar essas funções.
Rotas e endpoints


O problema


Criando rotas GET
https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
GET | https://dominio.com.br/wp-json/associados/checar/
namespace
add_action( 'rest_api_init', function () {
register_rest_route( 'associados', '/checar/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'check_user_status',
...
});
});
function check_user_status($data){
$user_id = $data['id'];
$status = get_user_meta($user_id, 'user_active', true);
return array( 'message' => $status );
}Criando rotas POST
POST | https://dominio.com.br/wp-json/associados/ativar/
register_rest_route( 'associados', '/ativar/(?P<id>\d+)', array(
'methods' => 'POST',
'permission_callback' => 'check_token',
'callback' => 'activate_user',
...
));
function check_token($request){
$token = '';
$request_token = $request->get_header('token');
if($token !== $request_token){
return new WP_Error( 'rest_forbidden', 'token inválido', array( 'status' => 401 ) );
}
return true;
}
function activate_user($request){
$body = $request->get_body_params();
$subscription = $body['subscription'];
$user_id = $request['id'];
update_user_meta( $user_id, 'user_active', 1, 0 );
update_user_meta( $user_id, 'subscription_number', $subscription );
return array( 'message' => 'OK' );
}Validando a resposta
register_rest_route( 'associados', '/ativar/(?P<id>\d+)', array(
'methods' => 'POST',
'permission_callback' => 'check_token',
'callback' => 'activate_user',
'args' => array(
'subscription' => array(
'required' => true,
'validate_callback' => function($param, $request, $key) {
return is_numeric( $request['subscription'] );
}
),
),
));
Links
WordPress REST API: criando rotas específicas para o seu projeto
By marcelo2605
WordPress REST API: criando rotas específicas para o seu projeto
- 779