WP REST API "rest_no_route" al intentar actualizar meta
He estado trabajando con la WP REST API y todos los comandos GET (lectura) obtienen los datos que quiero tanto de los tipos de post integrados como personalizados (este plugin fue una bendición para ayudar). También puedo hacer POST para crear entradas con información de nivel superior tanto para tipos de post integrados como personalizados. Toda mi autenticación funciona bien. Pero cuando intento actualizar post meta, me encuentro con la siguiente respuesta:
{
"code": "rest_no_route",
"message": "No se encontró ninguna ruta que coincida con la URL y el método de solicitud",
"data": {
"status": 404
}
}
Encontré referencia en este artículo sobre la posible necesidad de código adicional para hacer funcionar los metadatos, y luego encontré este plugin que SÍ resolvió el problema de publicación de meta, pero solo para el tipo de posts integrado (no funciona con mis tipos de post personalizados, que siguen devolviendo exactamente el mismo error).
Todo lo anterior es confuso y se complica, creo, por las capacidades cambiantes y el estado de la WP REST API en sí.
¿Alguien puede señalarme alguna documentación clara para realizar una actualización de valor meta en un tipo de post personalizado?
ACTUALIZACIÓN:
Ok, acabo de descubrir que el plugin rest-api-meta-endpoints mencionado anteriormente SÍ permitirá escribir en CPTs también, pero a través de /wp-json/wp/v2/posts/id/meta en lugar de /wp-json/wp/v2/cptname/id/meta... ¿es este el comportamiento esperado?
Dicho esto, para cualquier post solo puedo escribir datos nuevos, no puedo descubrir cómo actualizar meta existente todavía, ¿alguna idea?

Esto es lo que he aprendido sobre la API REST de WP: Es un lío de código sin documentar y sin terminar con gran potencial pero frustrantemente poca claridad.
Dicho esto, tengo una solución alternativa que compartiré aquí, esperando que sea útil para otros en una situación similar a la mía:
Acabo de descubrir que puedo actualizar un campo meta SI tengo su id y SI uso posts
en mi ruta (incluso para CPTs). Por ejemplo (asumiendo que mi ID de post es 1622 y mi ID de meta es 11395), esta consulta funcionará:
POST https://example.com/wp-json/wp/v2/posts/1622/meta/11395?value=mi_valor_clave
pero estas NO funcionarán (de varias maneras):
POST https://example.com/wp-json/wp/v2/posts/1622/meta?key=mi_nombre_clave&value=mi_valor_clave (AÑADIRÁ uno nuevo pero no editará el existente)
POST https://example.com/wp-json/wp/v2/posts/1622/?key=mi_nombre_clave&value=mi_valor_clave (404)
POST https://example.com/wp-json/wp/v2/mi-cpt/1622/meta?key=mi_nombre_clave&value=mi_valor_clave (404)
POST https://example.com/wp-json/wp/v2/mi-cpt/1622/meta/11395?value=mi_valor_clave (404)
También descubrí que puedo OBTENER todos los meta realizando una consulta como esta:
GET https://example.com/wp-json/wp/v2/posts/1622/meta/
Así que supongo que, juntando todo, podría hacer que esto funcione en su forma actual mediante:
GET https://example.com/wp-json/wp/v2/posts/1622/meta/
filtrando el resultado anterior para obtener el ID del meta que quiero cambiar
POST https://example.com/wp-json/wp/v2/posts/1622/meta/11395?value=mi_valor_clave
Si alguien tiene algo que añadir o cualquier idea sobre otras posibles direcciones, estoy abierto a escuchar. De lo contrario, supongo que esta es mi "solución".
Y por favor ten en cuenta los requisitos previos para que esto funcione:
- Este plugin configurado para exponer tus tipos de post y meta
- Este plugin para habilitar los endpoints meta.
- Lo que no incluí arriba fue ninguna mención sobre autenticación, ya que queda fuera del alcance de esta discusión, pero dependiendo de tu configuración, puede que necesites autenticarte antes de usar la API, como es el caso en mi configuración (usando Oauth y tokens que normalmente se añadirían a estas URLs).
