API REST de WordPress no funciona - Solución a error 404
WP 5.2.4
/wp-json/wp/v2/
Devuelve error 404.
Actualicé los enlaces permanentes, tengo un .htaccess funcional en Apache y no uso "enlaces permanentes simples" y aún así no funciona. Mi Apache y su configuración parecen correctos y todo funciona excepto /wp-json
.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
¿Cómo solucionar este frustrante error de WP? ¿Por qué WordPress no mejora esto, cuando la gente tiene problemas con esto a diario?
Mis rutas de WP se ven así (recortado):
array (
'^wc-auth/v([1]{1})/(.*)?' => 'index.php?wc-auth-version=$matches[1]&wc-auth-route=$matches[2]',
'^wc-api/v([1-3]{1})/?$' => 'index.php?wc-api-version=$matches[1]&wc-api-route=/',
'^wc-api/v([1-3]{1})(.*)?' => 'index.php?wc-api-version=$matches[1]&wc-api-route=$matches[2]',
'sitemap_index\\.xml$' => 'index.php?sitemap=1',
'([^/]+?)-sitemap([0-9]+)?\\.xml$' => 'index.php?sitemap=$matches[1]&sitemap_n=$matches[2]',
'([a-z]+)?-?sitemap\\.xsl$' => 'index.php?yoast-sitemap-xsl=$matches[1]',
'shop-4/?$' => 'index.php?post_type=product',
'shop-4/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=product&feed=$matches[1]',
'shop-4/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?post_type=product&feed=$matches[1]',
'shop-4/page/([0-9]{1,})/?$' => 'index.php?post_type=product&paged=$matches[1]',
'^wp-json/?$' => 'index.php?rest_route=/',
'^wp-json/(.*)?' => 'index.php?rest_route=/$matches[1]',
....
Como pueden ver, las reglas wp-json deberían funcionar ya que coinciden con una URL como
/wp-json/wp/v2/posts/6307
He verificado qué rutas REST están disponibles (usando el plugin "Rest Manager", simple y limpio):
/wp/v2/posts/
/wp/v2/posts/(?P<id>[\d]+)
Cuando accedo a las URLs:
/index.php?rest_route=wp/v2/posts/6307
/index.php?rest_route=/wp/v2/posts/6307
/index.php?rest_route=wp/v2/posts/
/index.php?rest_route=/wp/v2/posts/
Obtengo con todas:
(404)
{"code":"rest_no_route","message":"No se encontró ninguna ruta que coincida con la URL y el método de solicitud","data":{"status":404}}
Dicen que una lista de endpoints está disponible a través de GET /wp-json/
pero esta página también devuelve 404.
El comportamiento es exactamente el mismo para rutas que sé que usan verbos GET:
404 /wp-json/wp/v2/block-renderer/woocommerce/
Primero debes verificar si la API REST de WordPress está habilitada o no.
La mejor forma de verificar es visitar esta URL: https://yoursite.com/wp-json
.
Si ves una respuesta en formato JSON, la API REST está habilitada.
Si muestra una página de error o redirige a la página principal, la API REST no está habilitada. En ese caso, primero debemos habilitarla.
En este caso, debes habilitar los Enlaces permanentes
- Visita la página de administración de tu sitio (Visita
https://yoursite.com/wp-json
) - Ajustes > Enlaces permanentes (visita
https://yoursite.com/wp-admin/options-permalink.php
) - Asegúrate de que "Simple" no esté seleccionado
- Elige "Nombre de entrada" (es la mejor opción)
- Luego haz clic en Guardar cambios. Esto reescribirá/reparará tu archivo
.htaccess

Buen comienzo, pero no has mencionado qué hacer si ves una respuesta JSON (es decir, si la API está funcionando). Comenzaste con "si está habilitada o no" pero solo describiste el escenario de "no". Con gusto cambiaré mi voto negativo a positivo si puedes completar la respuesta :)
