¡Suscríbete a nuestra newsletter y recibe nuestras ofertas, novedades y descuentos directamente en tu email!

Ya tenía ganas de escribir una entrada un poco más técnica y compartir algunos snippets acerca de como configuro la API de WordPress cuando necesito customs endpoints.

Configurando la API de WordPress

Lo primero antes de nada es decir que la API de WordPress ya está configurada de base, y podéis acceder a vuestras entradas en formato json, escribiendo en el navegador http://tuweb.com/wp-json/wp/v2/posts/. Si no aparece nada, puede ser que no tengas entradas escritas, que este desactivada o que tengas algún plugin que bloquee el acceso a la API.

Para los que hayan acabado en este post sin saber por qué, un endpoint es esta parte de la URL «wp/v2/posts/», en resumidas cuentas un punto al que llamas para recibir cierta información.

Los endpoints personalizados pueden ser muy útiles para realizar operaciones determinadas desde una APP móvil o para recurrir a datos concretos que no te permiten los endpoints que ya trae de base la API de WordPress.

Endpoints por defecto en tu API WordPress:

RecursoRuta
Posts/wp/v2/posts
Post Revisions/wp/v2/revisions
Categories/wp/v2/categories
Tags/wp/v2/tags
Pages/wp/v2/pages
Comments/wp/v2/comments
Taxonomies/wp/v2/taxonomies
Media/wp/v2/media
Users/wp/v2/users
Post Types/wp/v2/types
Post Statuses/wp/v2/statuses
Settings/wp/v2/settings

Esta tabla esta sacada de la documentación oficial en developers.wordpress.org concretamente en la sección de API.

Recomiendo encarecidamente que todos los ajustes que vayáis a realizar los hagáis desde un plugin y no desde el mismo tema, ya que estáis aportando funcionalidades a WordPress y esto se sale de lo visual que debería ir en el tema; Además te va a resultar mas cómodo de controlar todo lo que programes si lo tienes en un plugin unificado.

Empecemos a programar tu propio endpoint para API WordPress

Para empezar a crear vuestro endpoint en concreto lo primero que tenéis que pensar es si es necesario, parece una tontería pero si lo que necesitáis ya viene desarrollado en la API por defecto no tiene mucho sentido ponerte a programarlo. Por eso mismo ve a developers.wordpress.org y echa un vistazo a los endpoint que ya están definidos por defecto.

Lo segundo, es crear la ruta. Usando el siguiente snippet crearemos el endpoint.


  register_rest_route( 'victor/v1', '/dameok/(?P\d+)', array(
    'methods' => 'GET',
    'callback' => 'dame_ok',
  ) );
} );

Explicando un poco lo que hemos escrito register_rest_route( 'victor/v1', '/dameok/(?P\d+)' aquí creamos una ruta que se llama /wp-json/victor/v1/dameok/<id>, esta ruta esta esperando como parámetros un numero que puedes usar para lo que necesites dentro de la función que se disparara cuando hagas una llamada a esta ruta. En mi caso le he llamado id y lo usare para comprobar si el parámetro pasado por url coincide con un id especifico inventado por mi. En definitiva se accedería de la siguiente manera https://www.tusitio.com/wp-json/victor/v1/dameok/22.

'methods' => 'GET'este fragmento de código indica el tipo de llamada que vamos a realizar a la API, aquí debes escribir el método que necesites en concreto, puede ser POST, PUT, DELETE….

'callback' => 'dame_ok' en este argumento, lo que le indicamos es la función que se disparara cuando se realice la consulta. En este caso function dame_ok($data) seria la función y aquí es donde jugaremos con los datos para devolver la información que necesitemos. El parámetro $data es un array con los valores que se nos han pasado por la url.

Código necesario para crear un custom endpoint

 
function dame_ok($data){

 if($data['id']==22){
  
 $estado ="OK";
 } else {

 $estado ="KO";
 }

 return $estado;
}

register_rest_route( 'victor/v1', '/dameok/(?P\d+)', array(
    'methods' => 'GET',
    'callback' => 'dame_ok',
  ) );
} );

Este código captura el id que se pasa por parámetro en la url y se compara con un numero que e puesto yo al azar. Devuelve OK si el numero es el mismo o KO si no. Una tontería un tanto inútil pero básicamente quería que entendierais como funcionaban los endpoints.

En resumen eso seria lo necesario para crear tu custom endpoint, espero que no haya resultado mucho lio, pero es mi primer post explicando código y aun estoy cogiéndole el truco a esto.
Crearé un plugin en condiciones y pondré el código aquí para que todos podáis construir vuestros Custom Endpoints.

Hasta pronto!!