Guía de los tipos de contenido personalizados de WordPress

Qué son los tipos de contenido personalizados
La plataforma WordPress incluye de forma predeterminada dos tipos de contenido: las entradas (artículos del blog) y las páginas. Sin embargo, la mayoría de los sitios tienen contenido que no encaja en ninguno de estos tipos. Los proyectos de un portafolio, los productos, las reseñas, los eventos, los anuncios inmobiliarios, las recetas o los miembros del equipo son ejemplos de contenido que requiere su propia estructura y presentación. Los tipos de contenido personalizados te permiten crear nuevos tipos de contenido con sus propios campos, taxonomías y plantillas.
Los tipos de contenido personalizados son un concepto fundamental en el desarrollo con WordPress que convierte WordPress de una plataforma de blogging en un completo CMS (sistema de gestión de contenidos). Cada plugin de WordPress que añade un nuevo tipo de contenido, como los productos de WooCommerce, los eventos de The Events Calendar o los plugins de portafolio, utiliza tipos de contenido personalizados por debajo. Entender los CPT te da control total sobre la estructura del contenido de tu sitio.
Registrar un tipo de contenido personalizado
La función register_post_type
Un tipo de contenido personalizado se registra mediante la función de WordPress register_post_type, llamada dentro del hook init. La función recibe dos argumentos: un slug, que es el identificador interno del tipo de contenido, y un array de argumentos que definen el comportamiento y la apariencia en el panel de administración. El slug debe ir en singular, en minúsculas, sin espacios y con un máximo de 20 caracteres. Por ejemplo, para los proyectos de un portafolio el slug sería project, para inmobiliaria property, para recetas recipe.
Argumentos clave
- labels: Un array de etiquetas que WordPress utiliza en la interfaz de administración, incluyendo name para el plural, singular_name para el singular, add_new para el botón de añadir, edit_item para el título de la página de edición y search_items para la búsqueda.
- public: Si el tipo de contenido está disponible públicamente en el frontend. Establécelo en true para el contenido que los visitantes deben ver.
- has_archive: Si el tipo de contenido tiene una página de archivo que muestra todos los elementos, similar a la página del blog para las entradas.
- supports: Qué características de WordPress están disponibles para este tipo de contenido, incluyendo title, editor, thumbnail, excerpt, custom-fields, comments y revisions.
- menu_icon: Un icono de Dashicons que se muestra en la barra lateral de administración. WordPress incluye más de 300 iconos para distintos propósitos.
- rewrite: Define la estructura de URL de este tipo de contenido. Por ejemplo, el slug portfolio crea URLs como tusitio.com/portfolio/nombre-del-proyecto.
- show_in_rest: Habilita el editor Gutenberg y el acceso a la API REST. Establécelo en true para los sitios WordPress modernos.
Advanced Custom Fields (ACF)
Por qué usar ACF
Los campos personalizados de WordPress son el mecanismo básico para añadir datos adicionales al contenido, pero la interfaz nativa es poco práctica. El plugin Advanced Custom Fields transforma la experiencia de creación de contenido al añadir campos intuitivos como entrada de texto, área de texto, selector de imágenes, selector de fecha, campo de Google Maps, campos de relación y mucho más. ACF es el estándar de facto en el desarrollo con WordPress, con más de 2 millones de instalaciones activas, y lo utilizan agencias de todo el mundo.
Tipos de campo
ACF ofrece más de 30 tipos de campo organizados en categorías. Los campos básicos incluyen texto, área de texto, número, correo electrónico, URL y contraseña. Los campos de elección son selección, casilla de verificación, botón de radio, grupo de botones y verdadero/falso. Los campos de contenido son imagen, archivo, editor WYSIWYG, oEmbed para vídeo y galería. Los campos relacionales son enlace, objeto de entrada, enlace de página, relación y taxonomía. Los campos de maquetación son grupo, repetidor para secciones repetidas, contenido flexible para maquetaciones modulares y clon. El campo repetidor es especialmente potente porque permite crear estructuras repetidas como una lista de miembros del equipo, secciones con iconos o una tabla de especificaciones.
Mostrar los campos de ACF
ACF proporciona funciones PHP sencillas para mostrar los valores de los campos en las plantillas. La función get_field devuelve el valor del campo, mientras que the_field muestra directamente el valor. Para las imágenes, get_field devuelve un array con la URL, el ancho, el alto y el texto alternativo. Para los campos repetidores, utiliza have_rows y the_row en un bucle while para recorrer todas las filas. Para el contenido flexible, utiliza get_row_layout para determinar qué maquetación está en juego y mostrar la plantilla correspondiente. La documentación de ACF es extremadamente detallada, con ejemplos para cada tipo de campo.
Taxonomías personalizadas
Qué son las taxonomías
Las taxonomías son sistemas para la clasificación del contenido. WordPress tiene de forma predeterminada dos taxonomías: las categorías, que son jerárquicas, y las etiquetas, que son planas. Para los tipos de contenido personalizados normalmente se necesitan taxonomías personalizadas. Por ejemplo, los proyectos de un portafolio pueden tener una taxonomía de tipo de proyecto con valores como diseño web, branding y fotografía. La inmobiliaria puede tener taxonomías para la ubicación, el tipo de propiedad y el rango de precio. Las recetas pueden tener cocina, tipo de plato y nivel de dificultad.
Registrar taxonomías
La función register_taxonomy se llama dentro del hook init, de forma similar a register_post_type. Recibe tres argumentos: el slug de la taxonomía, un array de los tipos de contenido a los que se aplica y un array de argumentos. El argumento hierarchical determina si la taxonomía funciona como las categorías, con una relación padre-hijo, o como las etiquetas, con una estructura plana. Las labels definen cómo se muestra la taxonomía en el panel de administración. El argumento rewrite controla la estructura de URL de las páginas de archivo de la taxonomía.
Taxonomías jerárquicas frente a planas
Las taxonomías jerárquicas se muestran como una lista de casillas de verificación en el panel de administración, con la posibilidad de crear términos padre e hijo. Úsalas para clasificaciones con una estructura clara, como las ubicaciones, donde España tiene subcategorías como Madrid, Barcelona y Valencia. Las taxonomías planas se muestran como un campo de entrada de etiquetas donde escribes los términos separados por comas. Úsalas para etiquetas flexibles como tecnologías, habilidades o características, donde no hay una relación jerárquica.
Archivos de plantilla para tipos de contenido personalizados
La jerarquía de plantillas de WordPress
WordPress utiliza una jerarquía específica para determinar qué archivo de plantilla se usará para mostrar el contenido. Para un tipo de contenido personalizado con el slug project, WordPress busca los archivos en el siguiente orden. Para los elementos individuales busca single-project.php, luego single.php, luego singular.php y luego index.php. Para la página de archivo busca archive-project.php, luego archive.php y luego index.php. Crea archivos de plantilla específicos para tu CPT para tener control total sobre la presentación.
Plantilla individual
La plantilla individual muestra un elemento de tu tipo de contenido personalizado. Por ejemplo, single-project.php para un proyecto de portafolio muestra el título del proyecto, la imagen destacada, la descripción, los campos de ACF como cliente, fecha, URL del proyecto y la galería de imágenes. Utiliza el bucle de WordPress the_loop para acceder a los datos de la entrada y las funciones de ACF para los campos personalizados. Añade navegación entre proyectos con previous_post_link y next_post_link, además de una sección de proyectos relacionados basada en la taxonomía.
Plantilla de archivo
La plantilla de archivo muestra una lista de todos los elementos con filtrado por taxonomía. Por ejemplo, archive-project.php muestra una cuadrícula de proyectos de portafolio con miniatura, título, categoría y una descripción breve. Añade botones de filtro para las taxonomías de modo que los visitantes puedan filtrar los proyectos por tipo. La paginación permite la navegación a través de un gran número de elementos. Para una presentación avanzada, utiliza WP_Query con argumentos personalizados para ordenar, filtrar y agrupar los elementos.
WP_Query para tipos de contenido personalizados
Consultas personalizadas
La clase WP_Query permite crear consultas personalizadas para obtener elementos de tipos de contenido personalizados con criterios específicos. El argumento post_type define qué tipo de contenido estás obteniendo. posts_per_page controla el número de resultados. orderby y order definen la ordenación por fecha, título, menu_order o valor de meta. tax_query filtra por taxonomía, con la posibilidad de combinar varias taxonomías mediante operadores AND u OR. meta_query filtra por valores de campos personalizados con operadores como igual, mayor que, menor que, LIKE y BETWEEN.
Ejemplos de consultas
Para mostrar los últimos 6 proyectos de portafolio de la categoría de diseño web ordenados por fecha, utiliza WP_Query con los argumentos post_type project, posts_per_page 6, tax_query con la taxonomía project_type y el término web-design. Para mostrar anuncios inmobiliarios con un precio entre 50.000 y 100.000 euros, utiliza meta_query con la clave price, el tipo NUMERIC y el operador BETWEEN. Restablece siempre el objeto global de la entrada con wp_reset_postdata después de las consultas personalizadas para no romper el bucle principal de WordPress.
API REST y Gutenberg
Acceso a la API REST
Con el argumento show_in_rest establecido en true, tu tipo de contenido personalizado obtiene automáticamente un endpoint de API REST en tusitio.com/wp-json/wp/v2/slug. Esto permite obtener, crear, actualizar y eliminar elementos mediante llamadas a la API, lo que constituye la base del acceso a WordPress headless y de los frontends en JavaScript. Los campos de ACF pueden exponerse en la API REST mediante el plugin ACF to REST API o registrando manualmente los campos con la función register_rest_field.
Bloques de Gutenberg
Con show_in_rest habilitado, tu CPT utiliza el editor Gutenberg en lugar del editor clásico. Puedes crear bloques de Gutenberg personalizados específicos para tu tipo de contenido utilizando ACF Blocks, que permite crear bloques con plantillas PHP y campos de ACF sin conocimientos de React. Por ejemplo, para un portafolio puedes crear un bloque que muestre una cuadrícula de proyectos seleccionados, o para recetas un bloque que formatee la lista de ingredientes y los pasos de preparación con un estilo personalizado.
Buenas prácticas para los tipos de contenido personalizados
Nomenclatura y organización
Utiliza un prefijo para el slug de tu CPT para evitar conflictos con otros plugins y con las actualizaciones de WordPress. Por ejemplo, en lugar de project usa myplugin_project. Agrupa el registro de los CPT y las taxonomías en una clase o archivo aparte para facilitar el mantenimiento. Utiliza constantes para los slugs y evitar errores tipográficos. Documenta cada CPT con una descripción de su propósito, la lista de campos de ACF y las taxonomías.
Rendimiento
Cada tipo de contenido personalizado añade consultas a la base de datos, así que evita crear demasiados CPT cuando las taxonomías pueden lograr el mismo objetivo. Por ejemplo, en lugar de CPT separados para blog, noticias y tutoriales, utiliza entradas estándar con categorías. Los campos de ACF se almacenan como meta de entrada en la base de datos; para los campos que se usan con frecuencia en consultas, plantéate crear una tabla personalizada para mejorar el rendimiento. Cachea las consultas WP_Query complejas mediante la API de transients para reducir la carga de la base de datos. En nuestras soluciones de alojamiento WordPress contamos con un entorno optimizado para sitios con tipos de contenido personalizados y consultas avanzadas, con suficiente memoria PHP y discos SSD rápidos para una experiencia de administración ágil.
Conclusión
Los tipos de contenido personalizados transforman WordPress de una plataforma de blog en un potente CMS capaz de gestionar cualquier tipo de contenido. La combinación de la función register_post_type para crear tipos de contenido, ACF para los campos personalizados, las taxonomías personalizadas para la clasificación y los archivos de plantilla para la presentación te da control total sobre la estructura y la presentación del contenido. Estos conocimientos son la base del desarrollo profesional con WordPress (empieza con nuestra guía) y abren posibilidades para crear sitios complejos como presentaciones de portafolio, catálogos de productos, directorios y aplicaciones empresariales.
BeoHosting Team
10+ años de experiencia — Especialistas en alojamiento web e infraestructura
- Web Hosting
- WordPress Hosting
- VPS
- Dedicated Serveri
- Domeni
- SSL
- cPanel
- LiteSpeed
- Linux administracija
- DNS
Última actualización: