• Saltar a la navegación principal
  • Saltar al contenido principal
Código Genesis

Código Genesis

Tutoriales de WordPress y Genesis Framework

  • Empieza aquí
  • Cuenta
    • Suscripción
    • Perfil
    • Actualizar tarjeta
    • Favoritos
    • Salir
  • Suscribirse
  • Acceder

Crear un endpoint en la REST API para campos personalizados de un Custom Post Type de WordPress

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:

RecursoRuta
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 1803 snippets de esta web,
identifícate o suscríbete aquí.

B – Avanced Custom Fields

Para ver este código y los otros 1803 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í:

Campos personalizados expuestos en la REST API.

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. 😉

CPT PHP REST API WordPress

Nahuai Badiola

Desarrollador web especializado en WordPress y Genesis Framework. CEO de Código Genesis y cofundador de OsomPress (temas y plugins para WordPress).

Para dejar dudas o preguntas sobre este código, puedes login o suscribirte.

  • Empieza aquí
  • Sobre Código Genesis
  • Preguntas frecuentes
  • Contacto

Aviso legal · Política de privacidad · Política de cookies · Condiciones de contratación
Copyright © 2023 · Código Genesis

¿Has olvidado tu contraseña?