Marcelo Villela Gusmão
marcelovillelagusmao@gmail.com
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.
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');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
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.
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 );
}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' );
}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'] );
}
),
),
));