• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Core / Agregar endpoints a la API REST de WordPress

Agregar endpoints a la API REST de WordPress

Agregar endpoints a la API REST de WordPress

[ 18 septiembre 2018 ] [ Autor: Jhon Marreros Guzmán ][ Core - Avanzado] [ ]

funcionalidad mejoras

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

En un artículo anterior vimos Cómo usar la REST API de WordPress , usamos algunos de los endpoints que WordPress trae por defecto, sin embargo, ¿ Cómo haces para crear tus propios endpoints ya sea de contenido propio de WordPress o de tus propios Plugins?

 

Generalidades

Un endpoint es la url que usarás para obtener un recurso de la API REST, gracias a WordPress podemos crear nuevos endpoints y extender la funcionalidad de la API REST de nuestro sitio web.

 

Ejemplo de un nuevo endpoint

Supongamos que quieres obtener los datos de la tabla de un plugin que no tiene interfaz API, en nuestro ejemplo será el plugin Yoast SEO que tiene la tabla llamada wp_yoast_seo_links, esta tabla nos muestra una lista de los enlaces por cada artículo.

Lo que haremos será un nuevo endpoint para obtener una lista de todos los enlaces que tiene un artículo dado su identificador post_id.

Las siguiente imagen muestra los datos de ejemplo de la tabla wp_yoast_seo_links.

Datos de ejemplo tabla

Para el contenido de WordPress ya tienes todos los posibles endpoints que te puedas imaginar.

 

Agregar endpoint a la API REST de WordPress

Usaremos un Hook de WordPress llamado rest_api_init para registrar una nueva ruta con la función register_rest_route, esta función tiene varios parámetros, en nuestro caso usaremos los tres primeros, el último de ellos, el array, nos permite pasar la función de callback en la cual programamos la devolución de los resultados.

Puedes agregar este código como parte de un plugin o para pruebas puedes hacerlo en el archivo functions.php de tu theme.

//Uso del Hook
add_action( 'rest_api_init', function () {
  register_rest_route( 'dcms-seo-yoast/v1', '/links/(?P<post_id>\d+)', array(
    'methods' => 'GET',
    'callback' => 'dcms_get_links_from_post',
  ) );
} );

//Función Callback
function dcms_get_links_from_post( $data ) {
  global $wpdb;

  $table = $wpdb->base_prefix . 'yoast_seo_links';
  $sql = "SELECT url FROM $table WHERE post_id = %d";
  $post_id = $data['post_id'];

  $result = $wpdb->get_results( $wpdb->prepare( $sql, $post_id ) );

  return $result;
}

En el código anterior:

  • Para usar la función register_rest_route, usamos el namespace dcms-seo-yoast/v1 y como ruta /links/(?P<post_id>\d+)
  • El último parámetro de la función register_rest_route es un array en el cual definimos la función callback
  • Puesto que como parte de la ruta pasamos un parámetro llamado post_id, podemos usarlo en la función callback para hacer una consulta SQL a la tabla que nos interesa y devolver los datos.
  • Con el parámetro pasado formamos la consulta SQL a la tabla de Yoast SEO que nos interesa

 

Resultado Final

Luego de agregar el código podemos hacer la consulta directamente al navegador, en este ejemplo he usado el dominio decodecms, por lo tanto la url completa sería:


https://decodecms.com/wp-json/dcms-seo-yoast/v1/links/594

Esta ruta obtiene los enlaces que tiene el artículo con id = 594 de la tabla de enlaces de Yoast SEO

Datos de links en forma json

Recuerda tener habilitadas urls amigables en tu sitio para probar la url

 

Conclusión

Como has podido ver, extender la funcionalidad de API REST agregando nuevos endpoints en WordPress no supone mayores complicaciones, puedes usar esta funcionalidad en tus proyectos en donde deseas que un plugin se comunique externamente con algún otro sistema.

 

¿Aún con dudas?, en el siguiente video se detalla los puntos tratados anteriormente.

Suscríbete a DecodeCMS:  

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • CRUD en WordPress sin pluginsCRUD en WordPress sin plugins
  • Cómo eliminar todos los productos de WooCommerceCómo eliminar todos los productos de WooCommerce
  • Agrupar los resultados de búsqueda en WordPressAgrupar los resultados de búsqueda en WordPress
  • tipos de complementos de WordPress5 tipos de complementos de WordPress
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (3 votos, promedio: 3,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. David Martinez

    15 febrero, 2022

    Disculpa en caso de no querer buscar por id y querer buscar por texto como deberia ser?

    • Jhon Marreros Guzmán

      17 febrero, 2022

      Hola, tienes que cambiar la consulta SQL, por ejemplo:
      WHERE campo = ‘%s’
      %s indica que se trata de un string.

      Saludos.

  2. David

    28 febrero, 2022

    Hola. Quisiera saber si me pueden ayudar a conectar un API externo a Woocomers, para que el stock, precio, etc se obtengan de esa api externa.
    La documentacion de la api dice que con el siguiente codigo se obtiene el archivo json:
    curl –request POST –url https://xxxxxx.mx/oauth/token
    -H ‘Content-Type: application/x-www-form-urlencoded’
    –data ‘client_id=ID_CLIENTE&client_secret=SECRETO_CLIENTE&grant_type=client_credentials’

    • Jhon Marreros Guzmán

      28 febrero, 2022

      Hola David, lo que te están indicando es la generación del token, luego con el token puedes hacer las consultas para actualizar. Espero hacer un curso sobre próximamente ya que hay varios puntos que cubrir. Saludos.

  3. javier

    13 septiembre, 2022

    hola buenas y si se nesecitas nuevos campos y insertarlos a otra tabla como se pódria?

    • Jhon Marreros Guzmán

      17 septiembre, 2022

      Hola, podrías cambiar el methods a POST, evaluaré realizar un artículo sobre eso.

  4. Carlos

    17 noviembre, 2022

    Muchas gracias, muy claramente explicado

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Presentación

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Jooble
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad social woocommerce

Populares

¿Cómo usar imágenes retina en WordPress?

Optimizar la carga de imágenes con Lazy Load

Mostrar widget lateral al inicio en móviles

Interceptar correos enviados en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2023 Todos los derechos reservados