¿Te gustaría recuperar tus entradas desde una aplicación móvil?, ¿o tal vez integrar el contenido de tu sitio con una aplicación de escritorio?, las posibilidades son infinitas a través del uso de la REST API de WordPress.
1- Generalidades
Además de nuestro sitio web, existen diversas aplicaciones con las que interactuamos; los Servicios Web nos permiten integrar aplicaciones externas de manera sencilla. En WordPress utilizaremos REST API como un Servicio Web para la comunicación entre aplicaciones.

Conceptos importantes:
- API (Application Programming Interface) es una interfaz de programación que un software ofrece a otro, a través de rutinas, funciones y métodos.
- REST (Representational State Transfer) es una arquitectura de software para sistemas hipermedia distribuídos. En la actualidad se usa para describir cualquier interfaz entre sistemas que utilice directamente HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc).
- Recursos: Son los bloques principales de la arquitectura REST, cuando hablamos de WordPress estos recursos son: entradas, páginas, comentarios, usuarios, etc
- URIs (Uniform Resource Identifier): Es la dirección para identificar a un recurso.
- HTTP Verbs: Una REST API permite realizar diversas operaciones como leer, crear, actualizar y borrar recursos, para esto usa los HTTP Verbs como sigue:
- GET: Usado para leer o devolver un recurso.
- POST: Usado para crear un nuevo recurso.
- PUT: Usado para actualizar un recurso.
- DELETE: Usado para borrar un recurso.
- HEAD: Usado para verificar la existencia de un recurso.
- OPTIONS: Usado para devolver información que soporta un recurso.
2- REST API en WordPress
La REST API WordPress convierte a tu sitio en una poderosa herramienta de administración y publicación de contenido fácil de usar por otras aplicaciones.
En futuras versiones de WordPress esta funcionalidad vendrá totalmente incluida, sin embargo a la fecha tenemos que instalar el plugin WP REST API (V2).
3- Haciendo consultas a la REST API
Una vez tenemos instalado el plugin podemos realizar diferentes consultas directamente en la barra de navegación o usar un complemento de navegador como Postman o REST easy.
Debemos agregar /wp-json/wp/v2/ a nuestra url de petición, en la siguiente imagen se ha usado Postman para hacer una petición Get de todos las entradas del sitio.
Esta petición nos devolverá el contenido de nuestras entradas en formato Json.
A continuación veremos algunas peticiones más comunes:
Listar todas las entradas usando GET
http://midominio.com/wp-json/wp/v2/posts/
Listar una entrada específica xxx usando GET
http://midominio.com/wp-json/wp/v2/posts/xxx
Listar las entradas de la categoría xxx usando GET
http://midominio.com/wp-json/wp/v2/posts?filter[cat]=xxx
4- Autenticación en la REST API
La autenticación nos permite realizar tareas de creación, actualización y eliminación de datos. WP REST API permite tres tipos de autenticación:
A continuación usaremos código PHP para conectarse a un sitio Web que tenga habilitado la REST API y realizaremos tareas de creación, actualización y eliminación de entradas.
Para desarrollar nuestro ejemplo usaremos la autenticación base, instalaremos el plugin Basic Auth. Tener en cuenta que este tipo de autenticación no debería ser usado en entornos de producción.
5- Creando una nueva entrada
El siguiente código PHP sirve para conectarse a nuestro sitio WordPress y crear una nueva entrada
Lo que hace este código:
- Defino la url de mi sitio REST API en la variable $host
- La variable $data_string tendrá los datos del nuevo post en formato json
- Defino la variable $headers, tener en cuenta que aquí pasaremos los datos de autenticación.
- Uso CURL
- Paso las cabeceras
- Puesto que es una creación usaré POST
- Paso los datos
- Defino para retornar un resultado
6- Actualizando una entrada
Para realizar una modificación lo único que tenemos que cambiar en el código anterior es la url de la variable $host y los datos a modificar en la variable $data.
La url a usar será del tipo:
$host = ‘http://encurso.app/wordpress461/wp-json/wp/v2/posts/123’;
En donde 123 es el ID del post a modificar, el código completo se puede ver a continuación:
7- Borrando una entrada
Para realizar una eliminación la url de la variable $host es similar a una actualización, la diferencia es que en este caso no necesitamos pasar la variable $data.
En el código anterior :
- Vemos que la url tiene el valor 123 que es el ID del post a eliminar.
- Usamos DELETE para indicar a la REST API que se trata de una eliminación.
8- Conclusión
En los tres últimos puntos hemos visto cómo realizar operaciones sobre las entradas de WordPress usando código PHP, sin embargo es posible usar cualquier otro lenguaje de programación para realizar estas operaciones, la REST API de WordPress se encargará de gestionar las operaciones enviadas.
¿Aún con dudas? En el siguiente video se explica en detalle los puntos anteriores.
He buscado información sobre este tema hasta cansarme… y aparece tu sitio, ¡gracias!
Además del conocimiento que atesoras, la didáctica, el ritmo de los tutoriales es excelente.
Te agradezco muchísimo el que expongas información que no se ve en ningún lado en español, y aunque me voy defendiendo con el inglés, en mi idioma me resulta más rápido cualquier aprendizaje.
Un saludo,
Hola
quisiera saber como hacer para filtrar un id de página, he intentado con los filters que se utilizan para los post, pero no funciona para las páginas.
Gracias, saludos.
Hola Matias. Pudiste solucionarlo? también necesito lo mismo. Alguien sabe como? por fa…
Hola como hacer para enviar media
$host = ‘http://tudominio.com/wp-json/wp/v2/media’ ???
puedo usar esto para mostrar entradas de un sitio A en un sitio B ?
Hola, si, pero tal vez sea mejor que evalúes usar plugins de sindicación para lo que comentas. Es decir desde el sitio origen publicas un Feed que será leído por el sitio destino con un plugin de RSS.
A ver si alguno me tira una idea. Debo hacer que un aplicacion de escritorio impacte el usuario y el password que genera en la tabla de usuarios de wordpress.
Estaba pensando si con la API REST es posible realizar esta operación?
Hola! como estas.. muy buen post… te quería consultar lo siguiente..
yo quiero llamar un JSON desde una Url… estuve viendo por ahi y vi que escriben en el function.php pero no logro entender bien cómo crear dicha función… para dejarlo un poco mas claro… yo necesito sacar la info de esta url “http://date.jsontest.com/” y mostrarla en wordpress ya se aun post, una entrada o un widget.. a lo que se me ocurrió que una vez sepa como hacer para utilizar la info de la url “http://date.jsontest.com/” crearle un shortcode para asi mostrar donde yo quiera… muchas gracias por tu tiempo!!
Hola, para el caso que comentas es mejor construir un plugin y no llenar tu functions.php de código. Tu plugin deberá poder hacer consultas Ajax para que recuperes esa información remota, te sugiero revisar: https://decodecms.com/ajax-en-wordpress-de-manera-correcta/
Hola, yo tengo una duda, ¿es posible obtener datos como videos, sliders o google maps que se encuentran en un post de una pagina creada con wordpress?
Hola, depende, si estos elementos son contenidos en HTML que forman parte del post, si que puedes extraerlos, sin embargo si son shortcodes generados por plugins externos como Visual Composer, Page Builder, Divi, etc, no será posible.
Hola que tal, e leído tu sitio el cual me ayudo mucho, y te lo agradezco mucho, sin en cambio hay algo que me tiene aún investigando y no eh encontrado la forma de darle solución, espero tú puedas ayudarme, verás quisiera poder obtener un json con aquellos post que son populares, la pagina en wp contiene un widget el cual muestra las “populares” (valga la redundancia), no se si habría alguna forma de obtener esos datos en el json. Gracias de antemano.
Hola, revisa el siguiente artículo: https://medium.com/fiatinsight/find-popular-posts-with-the-wordpress-rest-api-109013bdc5e3 , además hay algo similar en los videos para suscriptores (al suscribirte a la lista)
Estimado Jhon:
Excelentes videos, sobre todo el de REST API, muchas gracias.
JM.
Hola, necesito un curso de esto, tienes alguno que me enseñe a conectar WordPress con Facebook? Saludos.
Muchacho, que es xxx? id o slug?
http://midominio.com/wp-json/wp/v2/posts?filter%5Bcat%5D=xxx
Hola, es el ID de la categoría
Saludos. Yo he hecho una aplicacion con PHP y funciona bien, pero tengo un problema, cuando el contenido (no el titulo, sino el contenido) tiene los caracteres mayor que y menor que () lo corta hasta ahi, por ejemplo, si el contenido lleva “y para eso debes ir a menu > ” lo deja hasta menu y de ahi en adelante lo borra.
He buscado por todos lados una solución y no la encuentro.
Ojo, no puedo modificar configuraciones en el WP de destino, tengo que resolverlo desde mi PHP y no quisiera sustituir los caracteres. Ya probe con casi todas codificaciones de contenido y nada, WP lo recibe mal siempre.
Si me puedes ayudar, gracias
Hola, WordPress te lo envía como una cadena de texto plano, no debería cortarse el envío. Podrías probar con otro sitio web y verificar si te sucede lo mismo.
Jhon, un lujo tus explicaciones.
Te consulto, ésto me sirve para realizar en WordPress una conexion a una API externa y obtener mediante un JSON determinados campos e insertarlos en un Custom Post (ACF)?
Muchas gracias!
Hola, te sirve para conectarte a WordPress remotamente, pero no lo contrario. En tu caso si quieres desde WordPress conectarte a una API remota tendrías que evaluar hacer un plugin personalizado.
Jhon, tremendos aportes. Como podriamos hacer para atraves de la api actualizar campos creados con acf?
Hola, sería utilizar las funciones de acf una vez obtenidos los datos desde la API, revisa por ejemplo: https://www.advancedcustomfields.com/resources/update_field/