Descubre en este tutorial cómo crear un endpoint en la REST API de WordPress para exponer los campos personalizados de un Custom Post Type (CPT) mediante código.
La REST API cuenta con una serie de endpoints por defecto:
Recurso | Ruta |
---|---|
Posts | /wp/v2/posts |
Revisiones de entrada | /wp/v2/posts/<id>/revisions |
Categorias | /wp/v2/categories |
Etiquetas | /wp/v2/tags |
Páginas | /wp/v2/pages |
Revisiones de página | /wp/v2/pages/<id>/revisions |
Comentarios | /wp/v2/comments |
Taxonomías | /wp/v2/taxonomies |
Medios | /wp/v2/media |
Usuarios | /wp/v2/users |
Custom Post Type | /wp/v2/types |
Estado del post | /wp/v2/statuses |
Ajustes | /wp/v2/settings |
Temas | /wp/v2/themes |
Búsqueda | /wp/v2/search |
Bloques | /wp/v2/blocks |
Revisiones de bloques | /wp/v2/blocks/<id>/autosaves/ |
Renderizado de bloques | /wp/v2/block-renderer |
Pero si quieres exponer otros recursos vas a tener que hacerlo de forma manual.
Por ejemplo, el otro día Silvio, uno de los suscriptores, me preguntaba cómo podía exponer los campos personalizados relacionados con un Custom Post Type.
¿A ti también te interesa?
Aquí tienes cómo conseguirlo utilizando los hooks de WordPress.
Snippet para crear un endpoint específico en la REST API para mostrar los campos personalizados de un Custom Post Type
En primer lugar, si el Custom Post Type lo has creado tú, asegúrate de que has añadido el argumento 'show_in_rest' => true,
en el array del mismo, tal y como te muestro en el ejemplo para crear un Custom Post Type mediante código.
En caso de que estés usando un plugin de terceros para crear el CPT, si no tiene soporte, puedes seguir este tutorial en que te explico cómo dar soporte a la REST API en un CPT.
Con esto ya te habrás asegurado de que tu CPT tenga soporte para la REST API.
Y ahora, dependiendo de si estás usando los campos personalizados nativos de WordPress o el plugin Avanced Custom Fields tendrás que añadir uno o otro de los siguientes fragmentos al final del fichero functions.php o a tu plugin de funcionalidades:
A – Campos personalizados nativos
Para ver este código y los otros 1869 snippets de esta web,
identifícate o suscríbete aquí.
B – Avanced Custom Fields
Para ver este código y los otros 1869 snippets de esta web,
identifícate o suscríbete aquí.
En este bloque usas el hook rest_api_init para añadir un nuevo endpoint a la REST API de WordPress. En concreto, consigues exponer todos los campos personalizados del Custom Post Type «Curso».
Por supuesto, puedes cambiar el slug por el del Custom Post Type que te interese.
Cuando accedas a la URL: https://tuweb.com/wp-json/cg_endpoint/v1/custom_fields/ podrás ver el array del CPT, incluidos sus campos personalizados.
Te resultará fácil localizarlos ya que aparecerán seguidos del texto custom_fields
. Por ejemplo: "custom_fields":{"precio":"Gratis"}}
en el caso de que el tengas el campo personalizado «precio».
O si utilizas un navegador que formatea el JSON (como Firefox) verás algo así:

Conclusión
Ahora ya sabes cómo añadir un endpoint específico a la REST API de WordPress para mostrar los campos personalizados de un Custom Post Type.
Si tienes alguna duda te leo en los comentarios. Y si quieres dejarme una sugerencia para futuros tutoriales, envíamela a través del formulario de contacto.
Todo ventajas de ser suscriptor. 😉