¿Qué es la API REST?
La API REST permite que WordPress proporcione su contenido (entradas, páginas, categorías, medios) en formato JSON al mundo exterior. En una arquitectura headless, Next.js utiliza esta API para recuperar el contenido.
Compruebe si la API está activa
Abra la siguiente dirección en su navegador (sustitúyala por la URL de su propio sitio):
https://ejemplo.com/wp-json/wp/v2/postsSi ve sus entradas en formato JSON, ¡la API está activa! 🎉
Endpoints comunes
La API REST de WordPress ofrece numerosos endpoints:
| Endpoint | Descripción |
|---|---|
/wp-json/wp/v2/posts | Entradas del blog |
/wp-json/wp/v2/pages | Páginas |
/wp-json/wp/v2/categories | Categorías |
/wp-json/wp/v2/tags | Etiquetas |
/wp-json/wp/v2/media | Imágenes y medios |
/wp-json/wp/v2/users | Autores |
/wp-json/wp/v2/comments | Comentarios |
Parámetros importantes
# Obtener las primeras 10 entradas
/wp-json/wp/v2/posts?per_page=10
# Con datos embebidos (imágenes, autores)
/wp-json/wp/v2/posts?_embed
# Filtrar entradas por categoría
/wp-json/wp/v2/posts?categories=5
# Buscar entrada por slug
/wp-json/wp/v2/posts?slug=hola-mundo¿Qué hacer si la API está bloqueada?
Si la API no funciona, compruebe estas razones comunes:
1. Interferencia de plugins de seguridad
Plugins como Wordfence, iThemes Security o All In One WP Security pueden desactivar la API.
- Vaya a la configuración del plugin
- Busque el ajuste 'REST API' o 'JSON API'
- Active la API o añada su frontend a la lista blanca (whitelist)
2. Estructura de enlaces permanentes
Navegue a Ajustes > Enlaces permanentes en WordPress y elija cualquier opción que no sea 'Simple'.
3. Problemas con .htaccess
En servidores Apache, el archivo .htaccess podría estar bloqueando la API.
Configuración de CORS
Dado que Next.js accederá a la API desde un dominio diferente, es posible que necesite conceder permisos CORS. Añada este código a su sitio WordPress:
En su archivo functions.php:
add_action('rest_api_init', function() {
remove_filter('rest_pre_serve_request', 'rest_send_cors_headers');
add_filter('rest_pre_serve_request', function($value) {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
return $value;
});
});Buenas prácticas de seguridad para la API
- Mantenga públicos únicamente los endpoints de lectura (GET)
- Requiera autenticación para operaciones de escritura (POST, PUT, DELETE)
- Implemente limitación de tasa (rate limiting) para evitar abusos