WordPress REST API: qué es, cómo funciona y cómo utilizarla
La API REST de WordPress permite conectar un sitio web con aplicaciones, servicios externos y sistemas desarrollados con JavaScript, PHP u otros lenguajes de programación. Aprende cómo funcionan sus endpoints, cómo consultar publicaciones, crear integraciones, autenticar solicitudes y desarrollar rutas personalizadas.
/wp-json/. Permite conectar WordPress con aplicaciones externas, sistemas de gestión, tiendas online, aplicaciones JavaScript, plataformas móviles y otros servicios digitales.
¿Qué es la API REST de WordPress?
La WordPress REST API es una interfaz de programación que permite que WordPress intercambie información con otras aplicaciones mediante solicitudes HTTP. Los datos se envían y reciben principalmente en formato JSON, una estructura ligera y compatible con prácticamente todos los lenguajes de programación modernos.
En términos prácticos, permite que un programa consulte las publicaciones de WordPress, obtenga información de páginas, gestione categorías, acceda a medios o realice operaciones sobre recursos cuando dispone de la autenticación y los permisos necesarios.
La API también es una parte fundamental del funcionamiento del editor de bloques de WordPress. Además, permite desarrollar sitios desacoplados, aplicaciones web, paneles de administración personalizados e integraciones entre WordPress y otros sistemas.
¿Qué permite hacer WordPress REST API?
- Consultar publicaciones, páginas y categorías.
- Obtener imágenes, archivos y datos multimedia.
- Buscar contenido de un sitio WordPress.
- Crear y actualizar publicaciones con permisos adecuados.
- Integrar WordPress con aplicaciones JavaScript.
- Conectar tiendas, CRM, sistemas ERP y plataformas externas.
- Crear endpoints propios para exponer datos específicos.
- Construir aplicaciones móviles y plataformas desacopladas.
Para desarrolladores y empresas que trabajan con WordPress en Chile, esta tecnología puede servir para integrar contenidos de un sitio corporativo con un sistema comercial, un catálogo externo, un panel de operaciones o una aplicación propia.
¿Cómo funciona WordPress REST API?
La comunicación se realiza mediante una solicitud HTTP dirigida a una ruta de la API. WordPress procesa la petición, comprueba los permisos cuando corresponde y devuelve una respuesta, habitualmente en JSON.
El proceso general funciona de esta manera:
- Una aplicación prepara una solicitud hacia una URL de WordPress.
- La solicitud utiliza un método HTTP como GET, POST o DELETE.
- WordPress identifica la ruta y el endpoint correspondiente.
- El sistema procesa los parámetros y verifica la autenticación y los permisos necesarios.
- WordPress devuelve una respuesta JSON o un mensaje de error.
- La aplicación interpreta los datos y actualiza su interfaz o ejecuta otra tarea.
¿Cuál es la URL base de la REST API?
En una instalación habitual con enlaces permanentes habilitados, la API utiliza la ruta /wp-json/.
https://tusitio.cl/wp-json/
Por ejemplo, para consultar las publicaciones de un sitio:
https://tusitio.cl/wp-json/wp/v2/posts
Puedes abrir la dirección base en el navegador para explorar el índice de la API y descubrir los namespaces y las rutas registradas. La estructura concreta puede variar según los plugins, temas y tipos de contenido instalados.
rest_route.
¿Qué son las rutas y los endpoints de WordPress REST API?
Una ruta es la dirección que identifica un recurso dentro de la API. Un endpoint es la operación asociada a esa ruta mediante un método HTTP.
Por ejemplo, la ruta /wp/v2/posts/25 identifica una publicación específica. Según el método HTTP utilizado y los permisos disponibles, esa ruta puede permitir consultar, modificar o eliminar el recurso.
Ejemplo de ruta y endpoint
https://tusitio.cl/wp-json/wp/v2/posts/25
| Elemento | Descripción |
|---|---|
https://tusitio.cl |
Dominio del sitio WordPress. |
/wp-json/ |
Ruta base de la API. |
wp/v2 |
Namespace y versión de la API. |
posts |
Recurso de publicaciones. |
25 |
Identificador de la publicación. |
Una misma ruta puede admitir distintos métodos HTTP. Por eso, no basta con conocer la URL: también debes saber qué operación admite y qué permisos exige.
Métodos HTTP utilizados por WordPress REST API
Los métodos HTTP indican qué tipo de operación quiere realizar una aplicación sobre un recurso.
| Método | Función | Ejemplo |
|---|---|---|
| GET | Consultar recursos o información. | Obtener publicaciones. |
| POST | Crear recursos o enviar datos para una operación. | Crear una publicación. |
| PUT | Actualizar un recurso, cuando el endpoint lo admite. | Modificar una publicación. |
| PATCH | Aplicar una actualización parcial, cuando está admitida. | Modificar determinados campos. |
| DELETE | Eliminar o enviar a la papelera un recurso, según el endpoint. | Eliminar una publicación. |
| OPTIONS | Consultar información sobre los métodos y capacidades de una ruta. | Descubrir operaciones disponibles. |
La operación concreta depende del endpoint, de la configuración de WordPress y de los permisos del usuario autenticado.
Endpoints principales de WordPress REST API
WordPress incluye endpoints para administrar distintos tipos de recursos. La mayoría de las rutas principales se organizan dentro del namespace wp/v2.
Publicaciones
Páginas
Categorías
Etiquetas
Consulta las etiquetas asociadas a los contenidos.
Documentación de etiquetasMedios
Permite consultar archivos multimedia y sus metadatos.
Documentación de mediaUsuarios
Consulta los datos de usuarios que sean visibles según los permisos y el contexto de la solicitud.
Documentación de usuariosBúsqueda
Busca recursos de WordPress mediante una consulta.
Documentación de búsquedaEstas rutas son una parte del sistema. Los plugins y desarrollos personalizados pueden registrar sus propios namespaces y endpoints.
WordPress REST API con JavaScript moderno
Una de las formas más prácticas de consumir la API es mediante JavaScript. El navegador puede realizar solicitudes HTTP usando fetch(), procesar las respuestas JSON y actualizar dinámicamente la interfaz.
Esta técnica permite crear componentes que muestran publicaciones, catálogos, noticias o información de WordPress sin tener que recargar toda la página.
Las características modernas más utilizadas son:
fetch()para realizar solicitudes HTTP.asyncyawaitpara trabajar con operaciones asíncronas.URLSearchParamspara construir parámetros de consulta.try...catchpara controlar errores.AbortControllerpara cancelar solicitudes cuando corresponda.JSON.stringify()para enviar datos en formato JSON.
A diferencia de ejemplos antiguos basados exclusivamente en jQuery AJAX, fetch() forma parte de la plataforma web moderna y permite realizar solicitudes sin incorporar una biblioteca adicional.
Ejemplo: consultar publicaciones con fetch()
El siguiente ejemplo obtiene las últimas cinco publicaciones de un sitio WordPress y muestra sus títulos y enlaces. La consulta utiliza la API pública de lectura.
const API_ROOT = new URL(
'/wp-json/wp/v2/',
window.location.origin
);
async function obtenerPublicaciones() {
const url = new URL('posts', API_ROOT);
url.search = new URLSearchParams({
per_page: '5',
order: 'desc',
orderby: 'date'
});
const response = await fetch(url, {
headers: {
Accept: 'application/json'
}
});
if (!response.ok) {
throw new Error(
`Error HTTP: ${response.status}`
);
}
return await response.json();
}
obtenerPublicaciones()
.then(posts => {
console.log('Publicaciones:', posts);
})
.catch(error => {
console.error(
'No fue posible consultar WordPress:',
error
);
});
La respuesta contiene un arreglo de objetos JSON. Cada publicación incluye propiedades como el identificador, título, contenido, enlace, estado y fecha, según el contexto de acceso.
Mostrar publicaciones en una página HTML
También puedes utilizar los datos para construir una lista de contenidos. Este ejemplo crea los elementos mediante métodos del DOM y utiliza textContent para insertar el título como texto:
<div id="lista-publicaciones"></div>
<p id="estado-publicaciones"></p>
const contenedor = document.querySelector(
'#lista-publicaciones'
);
const estado = document.querySelector(
'#estado-publicaciones'
);
async function mostrarPublicaciones() {
estado.textContent = 'Cargando publicaciones...';
try {
const posts = await obtenerPublicaciones();
contenedor.replaceChildren();
if (posts.length === 0) {
estado.textContent = 'No hay publicaciones disponibles.';
return;
}
for (const post of posts) {
const article = document.createElement('article');
const title = document.createElement('h3');
const link = document.createElement('a');
link.href = post.link;
link.textContent = post.title.rendered;
title.append(link);
article.append(title);
contenedor.append(article);
}
estado.textContent = '';
} catch (error) {
estado.textContent =
'No se pudieron cargar las publicaciones.';
console.error(error);
}
}
mostrarPublicaciones();
textContent para mostrar textos recibidos desde la API cuando no necesitas interpretar HTML. No insertes contenido externo sin sanitizarlo mediante innerHTML.
¿Qué son async y await en JavaScript?
async y await permiten escribir código asíncrono con una estructura más sencilla de leer. Son especialmente útiles cuando una aplicación debe esperar respuestas de WordPress antes de actualizar la interfaz.
Una función declarada con async devuelve una promesa. Dentro de ella, await permite esperar la resolución de otra promesa sin bloquear el hilo principal del navegador.
Ejemplo básico
async function consultarAPI() {
try {
const response = await fetch(
'/wp-json/wp/v2/posts'
);
if (!response.ok) {
throw new Error('La solicitud falló');
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
consultarAPI();
En este ejemplo, el programa espera primero la respuesta HTTP y luego la conversión de los datos a JSON. Si ocurre un error, el bloque catch permite gestionarlo.
¿Por qué usar await en una consulta REST?
- Facilita la lectura del código asíncrono.
- Permite controlar los errores con
try...catch. - Ayuda a mantener un orden claro entre solicitudes dependientes.
- Evita crear cadenas extensas de callbacks.
- Facilita construir interfaces que dependen de datos remotos.
¿Cómo crear publicaciones mediante WordPress REST API?
Además de consultar información, la API puede crear publicaciones cuando la solicitud está autenticada y el usuario tiene los permisos necesarios.
Para crear una publicación se utiliza normalmente el endpoint:
POST /wp-json/wp/v2/posts
El cuerpo de la solicitud puede incluir datos como el título, contenido, estado, categorías y otros campos admitidos por el endpoint.
Ejemplo de creación con JavaScript
El siguiente ejemplo está pensado para ejecutarse dentro de WordPress, con un usuario autenticado y un Nonce REST válido:
async function crearPublicacion() {
const response = await fetch(
`${CiborgREST.root}wp/v2/posts`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': CiborgREST.nonce
},
body: JSON.stringify({
title: 'Publicación creada mediante la API',
content: 'Contenido enviado desde JavaScript.',
status: 'draft'
})
}
);
const result = await response.json();
if (!response.ok) {
throw new Error(
result.message || 'No fue posible crear la publicación'
);
}
return result;
}
crearPublicacion()
.then(post => {
console.log('Publicación creada:', post);
})
.catch(error => {
console.error(error);
});
El ejemplo crea un borrador. Esto permite comprobar la integración sin publicar automáticamente contenido en el sitio.
Autenticación y seguridad en WordPress REST API
La API permite consultar ciertos recursos públicos sin iniciar sesión. Sin embargo, las operaciones sobre contenido privado, la creación de publicaciones, la modificación de datos y otras tareas administrativas requieren autenticación y autorización.
Los mecanismos de autenticación dependen del tipo de aplicación y de dónde se ejecuta el código.
1. Autenticación mediante cookies y Nonce
Es el método habitual para solicitudes realizadas desde el propio WordPress cuando el usuario ha iniciado sesión. WordPress utiliza sus cookies de autenticación y un Nonce asociado a la acción wp_rest.
Para solicitudes AJAX manuales, el Nonce se envía normalmente mediante el encabezado X-WP-Nonce.
Generar el Nonce en PHP
El siguiente ejemplo carga un archivo JavaScript y facilita la URL base de la REST API y el Nonce:
function ciborg_cargar_rest_script() {
wp_enqueue_script(
'ciborg-rest-app',
get_stylesheet_directory_uri() . '/assets/js/rest-app.js',
array(),
'1.0.0',
true
);
wp_add_inline_script(
'ciborg-rest-app',
'window.CiborgREST = ' . wp_json_encode(
array(
'root' => esc_url_raw( rest_url() ),
'nonce' => wp_create_nonce( 'wp_rest' )
)
) . ';',
'before'
);
}
add_action(
'wp_enqueue_scripts',
'ciborg_cargar_rest_script'
);
En el archivo rest-app.js puedes utilizar:
console.log(CiborgREST.root);
console.log(CiborgREST.nonce);
Esta configuración es apropiada para código ejecutado dentro del mismo sitio WordPress y bajo una sesión autenticada. Debes comprobar que el usuario tenga la capacidad requerida para cada operación.
2. Application Passwords o contraseñas de aplicación
WordPress incorpora contraseñas de aplicación para autenticar integraciones externas mediante HTTPS. Se generan desde el perfil del usuario y permiten que una aplicación se conecte sin utilizar la contraseña principal de acceso al escritorio.
Son especialmente útiles para conexiones entre servidores, automatizaciones, aplicaciones externas y procesos que necesitan acceder a recursos protegidos.
Ejemplo de autenticación desde PHP con cURL
Este ejemplo representa una conexión servidor a servidor. Las credenciales se leen desde variables de entorno y no se incluyen directamente en el código público:
<?php
$username = getenv( 'WP_API_USER' );
$app_password = getenv( 'WP_API_APP_PASSWORD' );
if ( ! $username || ! $app_password ) {
throw new RuntimeException(
'Faltan las credenciales de la API.'
);
}
$url = 'https://tusitio.cl/wp-json/wp/v2/posts';
$authorization = base64_encode(
$username . ':' . $app_password
);
$ch = curl_init( $url );
curl_setopt_array( $ch, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array(
'Authorization: Basic ' . $authorization,
'Accept: application/json'
),
CURLOPT_TIMEOUT => 20
) );
$response = curl_exec( $ch );
$status = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
if ( $response === false ) {
$error = curl_error( $ch );
curl_close( $ch );
throw new RuntimeException( $error );
}
curl_close( $ch );
if ( $status < 200 || $status >= 300 ) {
throw new RuntimeException(
'La API respondió con HTTP ' . $status
);
}
$data = json_decode( $response, true );
print_r( $data );
En producción, configura las variables de entorno fuera del directorio público, protege los registros y evita imprimir credenciales o encabezados de autorización en mensajes de error.
¿Cómo utilizar WordPress REST API desde PHP?
PHP puede consumir la REST API mediante cURL o las herramientas HTTP disponibles en WordPress. Si el código se ejecuta dentro de una instalación WordPress, las funciones de su API HTTP permiten realizar solicitudes sin depender directamente de cURL.
Consultar publicaciones desde PHP
<?php
$url = 'https://tusitio.cl/wp-json/wp/v2/posts?per_page=5';
$response = wp_remote_get(
$url,
array(
'timeout' => 15,
'headers' => array(
'Accept' => 'application/json'
)
)
);
if ( is_wp_error( $response ) ) {
error_log( $response->get_error_message() );
return;
}
$status = wp_remote_retrieve_response_code( $response );
if ( $status !== 200 ) {
error_log( 'Error HTTP: ' . $status );
return;
}
$body = wp_remote_retrieve_body( $response );
$posts = json_decode( $body, true );
if ( ! is_array( $posts ) ) {
error_log( 'La respuesta JSON no es válida.' );
return;
}
foreach ( $posts as $post ) {
echo esc_html( $post['title']['rendered'] ) . '<br>';
}
Es importante comprobar si la solicitud devuelve un error, verificar el código HTTP y validar que la respuesta JSON tenga la estructura esperada antes de utilizar sus datos.
¿Cuándo usar PHP y cuándo JavaScript?
| PHP | JavaScript |
|---|---|
| Procesos ejecutados en el servidor. | Interacciones en el navegador. |
| Integraciones que utilizan credenciales privadas. | Consultas públicas y actualización dinámica de interfaces. |
| Automatizaciones y tareas internas. | Aplicaciones web interactivas. |
| Conexiones con CRM, ERP y otros sistemas protegidos. | Interfaces desacopladas y componentes dinámicos. |
¿Cómo crear un endpoint personalizado en WordPress?
La REST API no se limita a las rutas que vienen instaladas por defecto. También puedes crear endpoints propios para exponer información específica de un plugin, una aplicación o una funcionalidad de tu proyecto.
Para registrar una ruta personalizada se utiliza la función register_rest_route(), normalmente conectada al hook rest_api_init.
Ejemplo: crear una ruta REST personalizada
Este ejemplo registra una ruta que devuelve un mensaje de diagnóstico. Está protegida para usuarios que tengan la capacidad de editar publicaciones.
<?php
add_action( 'rest_api_init', function () {
register_rest_route(
'ciborg/v1',
'/estado',
array(
'methods' => 'GET',
'callback' => function ( $request ) {
return rest_ensure_response(
array(
'success' => true,
'message' => 'API disponible',
'namespace' => 'ciborg/v1'
)
);
},
'permission_callback' => function () {
return current_user_can( 'edit_posts' );
}
)
);
} );
Una vez registrado, el endpoint utiliza la ruta:
https://tusitio.cl/wp-json/ciborg/v1/estado
Para acceder correctamente debes iniciar una sesión o autenticar la solicitud mediante un mecanismo compatible y contar con la capacidad requerida.
¿Qué es permission_callback?
El parámetro permission_callback determina quién puede acceder al endpoint. WordPress utiliza esta función para comprobar los permisos antes de ejecutar el callback principal.
Si una ruta debe ser pública y solo entrega datos que pueden consultarse libremente, puede utilizarse __return_true. En cambio, para operaciones privadas debes establecer una comprobación de capacidades adecuada, como current_user_can().
Cómo conectar tipos de contenido personalizados con REST API
WordPress permite registrar tipos de contenido personalizados o Custom Post Types. Para que un tipo de contenido pueda utilizar los endpoints de la REST API y ser compatible con el editor de bloques, debe configurarse con la opción show_in_rest.
Ejemplo: registrar un tipo de contenido llamado proyectos
<?php
function ciborg_registrar_proyectos() {
register_post_type(
'proyectos',
array(
'labels' => array(
'name' => 'Proyectos',
'singular_name' => 'Proyecto'
),
'public' => true,
'show_in_rest' => true,
'has_archive' => true,
'supports' => array(
'title',
'editor',
'thumbnail',
'excerpt'
)
)
);
}
add_action(
'init',
'ciborg_registrar_proyectos'
);
Al registrar este tipo de contenido, WordPress puede exponerlo mediante el namespace wp/v2. La ruta habitual será:
https://tusitio.cl/wp-json/wp/v2/proyectos
Esto permite construir catálogos, directorios, fichas de servicios y otras estructuras de datos que pueden consumirse desde aplicaciones externas.
Paginación, filtros y rendimiento de la API
Cuando un sitio contiene muchas publicaciones, no es recomendable solicitar todo el contenido en una sola petición. WordPress incorpora parámetros para limitar resultados, filtrar información y consultar distintas páginas.
Parámetros habituales de consulta
| Parámetro | Función | Ejemplo |
|---|---|---|
per_page |
Indica cuántos recursos se devuelven. | ?per_page=5 |
page |
Selecciona la página de resultados. | ?page=2 |
search |
Filtra resultados mediante una búsqueda. | ?search=wordpress |
slug |
Consulta por slug. | ?slug=mi-articulo |
orderby |
Define el criterio de ordenamiento. | ?orderby=date |
order |
Orden ascendente o descendente. | ?order=desc |
_embed |
Solicita recursos relacionados incrustados. | ?_embed=1 |
Ejemplo: consultar publicaciones por página
https://tusitio.cl/wp-json/wp/v2/posts?per_page=10&page=2
WordPress limita normalmente per_page a un máximo de 100 elementos por solicitud. Para consultar colecciones grandes, debes recorrer las páginas disponibles.
Cómo conocer el número de páginas
Las respuestas paginadas incluyen dos encabezados HTTP importantes:
X-WP-Total: número total de recursos encontrados.X-WP-TotalPages: cantidad total de páginas disponibles.
Puedes leerlos desde JavaScript para construir una paginación dinámica:
async function consultarPagina(numero = 1) {
const url = new URL(
'posts',
API_ROOT
);
url.search = new URLSearchParams({
per_page: '10',
page: String(numero)
});
const response = await fetch(url);
if (!response.ok) {
throw new Error(
`Error HTTP ${response.status}`
);
}
const posts = await response.json();
const total = response.headers.get(
'X-WP-Total'
);
const totalPages = response.headers.get(
'X-WP-TotalPages'
);
return {
posts,
total: Number(total),
totalPages: Number(totalPages)
};
}
const resultado = await consultarPagina(1);
console.log(resultado.posts);
console.log('Total:', resultado.total);
console.log('Páginas:', resultado.totalPages);
Utilizar paginación, limitar campos cuando corresponda y evitar solicitudes repetidas permite reducir el consumo de recursos y mejorar la experiencia de las aplicaciones conectadas a WordPress.
Errores frecuentes al utilizar WordPress REST API
Cuando una solicitud falla, la API normalmente entrega un código HTTP y una respuesta JSON que ayudan a identificar el problema.
| Código | Significado habitual | Qué revisar |
|---|---|---|
| 400 | Solicitud incorrecta. | Parámetros, formato JSON y validación de campos. |
| 401 | Falta autenticación válida. | Credenciales, cookies o método de autenticación. |
| 403 | Acceso no autorizado. | Permisos, capacidades y Nonce. |
| 404 | Ruta o recurso no encontrado. | Endpoint, identificador y registro de la ruta. |
| 405 | Método HTTP no admitido. | Verbo HTTP disponible para el endpoint. |
| 500 | Error interno del servidor. | Errores PHP, plugins, código personalizado y registros del servidor. |
Problemas habituales y soluciones
- REST API devuelve 404: revisa la ruta, los enlaces permanentes y si el endpoint está registrado.
- REST API devuelve 401: comprueba el método de autenticación y sus credenciales.
- Respuesta 403: verifica el Nonce y la capacidad del usuario.
- Error CORS: revisa la configuración del servidor y los encabezados de acceso entre orígenes.
- Respuesta vacía: comprueba los filtros, parámetros y permisos del recurso consultado.
- JSON inválido: verifica si algún plugin o código personalizado está generando salida adicional o errores PHP.
¿Para qué sirve WordPress REST API en proyectos reales?
La principal ventaja de la API REST es que separa el acceso a los datos de la interfaz con la que interactúan los usuarios. Esto facilita conectar WordPress con otros sistemas y construir experiencias personalizadas.
Aplicaciones prácticas
- Aplicaciones web: mostrar contenido de WordPress mediante interfaces JavaScript o frameworks como React y Next.js.
- Aplicaciones móviles: utilizar WordPress como fuente de publicaciones, páginas y otros recursos.
- Ecommerce: conectar información del catálogo o procesos específicos con otras plataformas, respetando las capacidades de cada integración.
- CRM y ERP: intercambiar información entre un sitio WordPress y sistemas de gestión empresarial.
- Directorios: mostrar negocios, servicios, perfiles y registros mediante endpoints personalizados.
- Automatización: conectar WordPress con flujos de trabajo y servicios externos.
- Paneles personalizados: construir interfaces propias para consultar y gestionar contenido.
- Arquitectura headless: utilizar WordPress como backend de contenidos y otra tecnología como frontend.
¿Qué es WordPress Headless?
WordPress Headless es una arquitectura en la que WordPress se utiliza principalmente como sistema de gestión de contenidos, mientras que la interfaz pública se desarrolla en otra tecnología.
Por ejemplo, WordPress puede almacenar páginas y publicaciones, mientras que una aplicación desarrollada con React o Next.js consulta esos contenidos mediante la REST API y se encarga de mostrarlos al usuario.
Esta arquitectura ofrece flexibilidad, pero también implica responsabilidades adicionales: renderizado, SEO técnico, caché, rendimiento, rutas, autenticación y mantenimiento de la aplicación frontend.
Preguntas frecuentes sobre WordPress REST API
Respuestas directas a las consultas más habituales sobre la API REST de WordPress, su funcionamiento, autenticación, endpoints y desarrollo con JavaScript.
WordPress REST API es una interfaz que permite conectar un sitio WordPress con aplicaciones y servicios externos mediante solicitudes HTTP y respuestas JSON. Sirve para consultar, crear, actualizar y gestionar recursos según la autenticación y los permisos disponibles.
La dirección habitual es https://tusitio.cl/wp-json/. Para consultar las publicaciones se utiliza https://tusitio.cl/wp-json/wp/v2/posts. La estructura puede variar si la instalación utiliza una configuración especial de enlaces permanentes.
Sí. La API utiliza JSON como formato de intercambio de datos. Las aplicaciones pueden procesar las respuestas con JavaScript, PHP, Python y otros lenguajes compatibles.
Puedes utilizar fetch() para realizar una solicitud GET al endpoint /wp-json/wp/v2/posts. Después debes comprobar la respuesta HTTP y procesar los datos con response.json().
Debes enviar una solicitud POST a /wp-json/wp/v2/posts con un cuerpo JSON que incluya los campos admitidos. La solicitud requiere autenticación y permisos suficientes para crear contenido.
No. Los recursos públicos pueden consultarse normalmente sin iniciar sesión. Para acceder a información privada o realizar operaciones protegidas necesitas un método de autenticación válido y los permisos correspondientes.
Es una contraseña específica que permite autenticar aplicaciones externas mediante la REST API. Se genera desde el perfil de usuario y debe utilizarse mediante HTTPS. Nunca debe exponerse en el código JavaScript del navegador.
Una ruta identifica una dirección dentro de la API. Un endpoint representa una operación asociada a esa ruta y a un método HTTP, como GET, POST o DELETE.
Utiliza register_rest_route() dentro del hook rest_api_init. Debes definir un namespace, una ruta, el callback que procesa la solicitud y un permission_callback que controle el acceso.
Al registrar el tipo de contenido personalizado, establece 'show_in_rest' => true. Esto permite que WordPress exponga el contenido mediante la API, utilizando el namespace correspondiente.
Generalmente significa que la solicitud no tiene autorización para acceder al recurso. Debes revisar la autenticación, el Nonce, las capacidades del usuario y la función permission_callback si se trata de un endpoint personalizado.
Sí. Puedes utilizar WordPress como backend de contenidos y desarrollar el frontend con React, Next.js u otra tecnología. La aplicación consulta los datos mediante la API y se encarga de renderizarlos.
Documentación oficial y recursos para desarrolladores
Para profundizar en la implementación de la REST API, consulta la documentación oficial de WordPress y las referencias de tecnologías web:
- WordPress REST API Handbook
- Referencia de endpoints de WordPress
- Autenticación de WordPress REST API
- Paginación de la REST API
- Crear endpoints personalizados
- REST API para Custom Post Types
- MDN: utilizar Fetch API
- MDN: funciones async en JavaScript
Guía técnica de Ciborg sobre WordPress REST API. Los ejemplos son ilustrativos y deben adaptarse a la versión de WordPress, configuración del servidor, permisos y arquitectura de cada proyecto. Antes de utilizar operaciones de escritura en producción, implementa autenticación, autorización, validación de datos y pruebas en un entorno controlado.
