Un Custom Post Type (CPT), o tipo de contenido personalizado, es un tipo de contenido propio que creás en WordPress, además de los dos que trae de fábrica: las entradas (para el blog, con fecha y categorías) y las páginas (para contenido estático como «Quiénes somos»). El problema que resuelven es este: entradas y páginas sirven para un blog o una web sencilla, pero se quedan cortas cuando querés gestionar contenido con una estructura propia —recetas, propiedades inmobiliarias, cursos, eventos, productos, miembros de un equipo, fichas de un directorio—. Meter todo eso como «entradas» lo mezcla con el blog y no te deja darle los campos ni la organización que necesita. Un CPT le da a ese contenido su propio sitio en el escritorio (su propio menú «Recetas», con su lista y su editor), su propia estructura y sus propias URLs. Se crean de dos formas: con un plugin (la vía recomendada si no programás: definís el tipo desde una interfaz, sin tocar código) o con código, usando la función register_post_type() en el tema o en un plugin propio (la vía de los desarrolladores, más flexible y sin depender de un plugin externo). Pero un CPT por sí solo es un «contenedor vacío»: para que sea útil se combina con dos piezas más. Los campos personalizados (a menudo con el plugin ACF) añaden los datos propios de ese contenido —el precio y los metros de una propiedad, el tiempo y las raciones de una receta—. Y las taxonomías personalizadas son formas de clasificarlo, como las categorías y etiquetas lo son de las entradas —«tipo de cocina» para recetas, «zona» para propiedades—. CPT + campos + taxonomías es la combinación que convierte WordPress de un simple blog en un gestor de contenido a medida, capaz de modelar casi cualquier cosa.
Ver índice de contenidos
Qué es un CPT
WordPress organiza todo su contenido en tipos de contenido (post types). De fábrica trae varios, pero los dos que usás a diario son las entradas y las páginas. Las entradas están pensadas para contenido cronológico —los artículos de un blog, ordenados por fecha, con categorías y etiquetas—. Las páginas, para contenido estático y atemporal —«Inicio», «Contacto», «Aviso legal»—, que se organiza en jerarquía en vez de por fecha. Un Custom Post Type es, sencillamente, un tipo de contenido más que definís vos, con el nombre, la estructura y el comportamiento que necesites.
Por qué entradas y páginas no bastan
Imaginá una web inmobiliaria con cientos de propiedades. Si las publicás como entradas, se mezclan con los artículos del blog, comparten las mismas categorías, y no hay un sitio natural para el precio, los metros cuadrados o el número de habitaciones. Si las hacés páginas, tenés cientos de páginas sueltas sin estructura ni forma de filtrarlas. Ninguna de las dos encaja. Un CPT «Propiedad» resuelve todo: aparece como su propio menú en el escritorio, separado del blog; tiene sus propios campos (precio, metros, habitaciones); se clasifica con sus propias taxonomías (zona, tipo de inmueble); y tiene sus propias URLs y plantillas. Ese es el momento en que hace falta un CPT: cuando un contenido tiene identidad y estructura propias y no debería mezclarse con el blog ni quedar como páginas sueltas.
Cómo se crean
Hay dos caminos para crear un CPT, según tu perfil:
| Vía | Para quién | Ventaja / inconveniente |
|---|---|---|
| Con un plugin | Quien no programa | Fácil, visual, sin código; dependés del plugin |
Con código (register_post_type) | Desarrolladores | Flexible y sin dependencias; requiere programar |
Si creás el CPT con código, la función register_post_type() se «engancha» al arranque de WordPress. La pregunta clave es dónde escribir ese código, y la respuesta correcta casi nunca es «en el tema». Si registrás el CPT en tu tema y algún día cambiás de tema, tus «propiedades» o «recetas» desaparecen del escritorio (siguen en la base de datos, pero WordPress ya no sabe que ese tipo existe). Por eso la buena práctica es registrar los CPT en un plugin propio (aunque sea uno pequeño, hecho a medida), que sobrevive al cambio de tema. El tema debería encargarse solo de cómo se ven (las plantillas), no de qué tipos de contenido existen. Las plantillas sí van en el tema —mejor en un tema hijo— con nombres como single-propiedad.php.
Campos y taxonomías
Un CPT recién creado es un contenedor vacío: tiene título y editor, como una entrada, pero nada que lo haga especial. Las dos piezas que lo completan:
| Pieza | Qué aporta | Ejemplo (CPT «Propiedad») |
|---|---|---|
| Campos personalizados | Los datos propios de ese contenido | Precio, metros cuadrados, habitaciones, año |
| Taxonomías personalizadas | Formas de clasificarlo y filtrarlo | Zona, tipo de inmueble, operación (venta/alquiler) |
Los campos personalizados son datos extra que añadís a cada elemento de un CPT. WordPress trae un sistema básico de campos personalizados, pero para trabajar cómodo la mayoría usa un plugin como Advanced Custom Fields (ACF), que permite definir campos con una interfaz clara —un campo «precio» de tipo número, un campo «foto» de tipo imagen, un campo «servicios» de casillas— y mostrarlos ordenados en el editor. Así, quien carga una propiedad ve un formulario con sus campos, en lugar de tener que meter los datos en el texto. Las taxonomías, por su parte, son el equivalente a las categorías y etiquetas, pero para tu CPT: una taxonomía «Zona» te deja clasificar las propiedades por barrio y filtrarlas. La combinación CPT + campos + taxonomías es lo que hace de WordPress un gestor de contenido a medida, y es la base de casos como un directorio de negocios. Además, esos campos estructurados encajan de forma natural con el Schema Markup para describir el contenido a los buscadores.
Errores frecuentes
- Usar entradas para todo. Mezclar propiedades o recetas con el blog complica la gestión; si tiene estructura propia, merece un CPT.
- Registrar el CPT en el tema. Al cambiar de tema, el tipo de contenido desaparece del escritorio; va en un plugin propio.
- Crear un CPT para todo. Si solo son unas pocas páginas estáticas, un CPT es sobreingeniería; no todo necesita uno.
- Olvidar las plantillas. Sin una plantilla propia, el CPT se muestra con la genérica del tema; conviene diseñar su vista.
- Confundir campos con taxonomías. Los campos guardan datos (precio); las taxonomías clasifican (zona); no son intercambiables.
- Elegir un slug conflictivo. El identificador del CPT no debe chocar con otros ni con palabras reservadas de WordPress.
- No pensar en el SEO. Un CPT genera URLs y archivos; conviene planificar su estructura y sus datos estructurados.
Preguntas frecuentes
¿Qué es un Custom Post Type en WordPress?
Un Custom Post Type, que en español se traduce como tipo de contenido personalizado, es un tipo de contenido propio que se crea en WordPress además de los tipos de contenido que el sistema trae de fábrica, con el fin de gestionar contenidos que tienen una estructura y una identidad propias y que no encajan bien en los tipos predeterminados. WordPress organiza todo su contenido en tipos de contenido, y de manera predeterminada los dos que se utilizan habitualmente son las entradas y las páginas. Las entradas están pensadas para el contenido cronológico, como los artículos de un blog, que se ordenan por fecha y se clasifican mediante categorías y etiquetas. Las páginas están pensadas para el contenido estático y atemporal, como las secciones de inicio, contacto o aviso legal, que se organizan en una jerarquía en lugar de por fecha. El problema es que estos dos tipos, aunque cubren bien las necesidades de un blog o de una web sencilla, se quedan cortos cuando se necesita gestionar contenido con una estructura propia, como recetas, propiedades inmobiliarias, cursos, eventos, productos o fichas de un directorio, ya que meter todo eso como entradas lo mezcla con el blog y no permite darle los campos ni la organización específicos que requiere. Un Custom Post Type resuelve esta limitación al permitir definir un tipo de contenido nuevo con el nombre, la estructura y el comportamiento que se necesiten. Ese nuevo tipo de contenido obtiene su propio espacio en el escritorio de administración, es decir, su propio menú con su lista de elementos y su editor, separado de las entradas y las páginas, así como sus propias direcciones y la posibilidad de tener sus propias plantillas de visualización. De este modo, por ejemplo, una web inmobiliaria puede tener un tipo de contenido llamado propiedad, con su menú propio en el escritorio, en lugar de mezclar las propiedades con los artículos del blog. En definitiva, un Custom Post Type es la herramienta que permite que WordPress deje de ser únicamente un gestor de blogs y páginas y se convierta en un gestor de contenido capaz de modelar casi cualquier tipo de información con su estructura propia.
¿Por qué no basta con usar entradas y páginas?
Las entradas y las páginas no bastan para todo porque están diseñadas para dos tipos concretos de contenido, el cronológico y el estático, y cuando se necesita gestionar contenido con una estructura e identidad propias, forzarlo a encajar en entradas o páginas genera desorden y limitaciones importantes. Para entenderlo resulta útil un ejemplo, como el de una web inmobiliaria que necesita gestionar cientos de propiedades. Si esas propiedades se publican como entradas, surgen varios problemas: se mezclan con los artículos del blog en la misma lista, comparten las mismas categorías y etiquetas que los artículos, lo que genera confusión, y no existe un lugar natural y estructurado para almacenar los datos propios de una propiedad, como el precio, los metros cuadrados o el número de habitaciones, que acabarían metidos dentro del texto de forma desordenada. Si, por el contrario, esas propiedades se crean como páginas, el problema es distinto pero igualmente grave: se acaba teniendo cientos de páginas sueltas sin una estructura común, sin una forma sencilla de clasificarlas ni de filtrarlas, y sin la organización cronológica ni por categorías que ayudaría a manejarlas. En ambos casos, el contenido no recibe el tratamiento que merece. Un tipo de contenido personalizado llamado propiedad resuelve todos estos problemas de golpe: aparece como su propio menú en el escritorio, claramente separado del blog; puede tener sus propios campos específicos para el precio, los metros y las habitaciones; se puede clasificar mediante sus propias taxonomías, como la zona o el tipo de inmueble; y dispone de sus propias direcciones y plantillas de visualización. Por tanto, el momento en que conviene crear un tipo de contenido personalizado es precisamente cuando un contenido tiene identidad y estructura propias y no debería mezclarse con el blog ni quedar como un conjunto de páginas sueltas. Dicho esto, tampoco hay que caer en el extremo contrario de crear tipos de contenido personalizados para todo, ya que si solo se trata de unas pocas páginas estáticas, las páginas normales son la opción adecuada y crear un tipo personalizado sería una complicación innecesaria.
¿Cómo se crea un Custom Post Type?
Un Custom Post Type se puede crear de dos formas principales, mediante un plugin o mediante código, y la elección entre una y otra depende sobre todo del perfil técnico de quien lo va a hacer y de las necesidades del proyecto. La primera forma es utilizar un plugin específico para crear tipos de contenido personalizados, que es la vía recomendada para quienes no programan. Estos plugins ofrecen una interfaz gráfica en la que se define el nuevo tipo de contenido rellenando formularios, indicando su nombre, sus etiquetas, sus opciones y su comportamiento, sin necesidad de escribir ni una línea de código. Esta opción es rápida, accesible y suficiente para la mayoría de los casos, aunque tiene la contrapartida de que el tipo de contenido depende de que ese plugin siga instalado y activo. La segunda forma es crear el tipo de contenido mediante código, utilizando la función de WordPress destinada a registrar tipos de contenido, que permite definir con todo detalle las características del nuevo tipo. Esta es la vía de los desarrolladores, ya que requiere conocimientos de programación, pero ofrece la máxima flexibilidad y la ventaja de no depender de un plugin externo. Un aspecto muy importante cuando se crea un tipo de contenido mediante código es decidir dónde colocar ese código. Aunque técnicamente se podría poner en el tema, esto es una mala práctica, porque si en el futuro se cambia de tema, el tipo de contenido dejaría de estar registrado y desaparecería del escritorio, aunque su contenido siguiera almacenado en la base de datos. La buena práctica es registrar los tipos de contenido personalizados en un plugin propio, aunque sea un plugin pequeño creado a medida, ya que de ese modo el tipo de contenido sobrevive a los cambios de tema. La idea de fondo es que el tema debe encargarse únicamente de cómo se ve el contenido, es decir, de las plantillas de visualización, mientras que la definición de qué tipos de contenido existen corresponde a la lógica del sitio y debe residir en un plugin. Las plantillas que muestran el tipo de contenido personalizado, en cambio, sí van en el tema, preferiblemente en un tema hijo para que no se pierdan al actualizar el tema, y siguen unas convenciones de nombres que permiten a WordPress usarlas automáticamente para ese tipo de contenido.
¿Qué son los campos personalizados y para qué sirven?
Los campos personalizados son datos adicionales que se añaden a cada elemento de un contenido en WordPress para almacenar información específica que no cabe en el título ni en el cuerpo del texto, y son una de las piezas fundamentales que complementan a los tipos de contenido personalizados para hacerlos verdaderamente útiles. Cuando se crea un tipo de contenido personalizado, este es en un principio como un contenedor vacío que, al igual que una entrada, dispone de un título y de un editor de texto, pero que no tiene todavía nada que lo haga especial ni que capture los datos propios de ese contenido. Aquí es donde entran los campos personalizados, que permiten definir y almacenar los datos concretos que caracterizan a ese tipo de contenido. Por ejemplo, en un tipo de contenido llamado propiedad, los campos personalizados servirían para guardar el precio, los metros cuadrados, el número de habitaciones o el año de construcción; en un tipo de contenido llamado receta, servirían para guardar el tiempo de preparación, el número de raciones o el nivel de dificultad. WordPress incluye un sistema básico de campos personalizados, pero para trabajar de forma cómoda y potente la mayoría de los usuarios recurren a un plugin especializado, siendo el más conocido Advanced Custom Fields. Estos plugins permiten definir los campos mediante una interfaz clara, indicando para cada campo su nombre y su tipo, como número, texto, imagen, fecha o casillas de selección, y hacen que esos campos aparezcan organizados y con un aspecto amigable en el editor del contenido. De este modo, la persona que carga por ejemplo una propiedad se encuentra con un formulario ordenado con los campos correspondientes, en lugar de tener que introducir esos datos mezclados en el texto, lo que mejora enormemente tanto la comodidad de la gestión como la coherencia y la estructura de los datos almacenados. Los campos personalizados son, por tanto, lo que da contenido y significado específico a un tipo de contenido personalizado, y su combinación con las taxonomías personalizadas, que sirven para clasificar el contenido, es lo que convierte WordPress en un gestor de contenido a medida capaz de modelar información compleja de manera estructurada. Además, al tener los datos bien estructurados en campos, resulta mucho más fácil mostrarlos de forma ordenada en las plantillas y aprovecharlos para otras finalidades, como los datos estructurados para los buscadores.
¿Qué diferencia hay entre un campo personalizado y una taxonomía?
La diferencia entre un campo personalizado y una taxonomía está en su función: un campo personalizado sirve para almacenar un dato concreto de un elemento de contenido, mientras que una taxonomía sirve para clasificar y agrupar los elementos de contenido, de modo que aunque ambos complementan a los tipos de contenido personalizados, cumplen papeles distintos y no son intercambiables. Un campo personalizado guarda información específica de cada elemento individual, es decir, un valor que pertenece a ese elemento concreto y que normalmente es distinto para cada uno. Por ejemplo, en un tipo de contenido llamado propiedad, el precio, los metros cuadrados o el número de habitaciones son campos personalizados, porque cada propiedad tiene su propio precio, su propia superficie y su propio número de habitaciones, que son datos que describen esa propiedad en particular. Los campos personalizados son, por tanto, los atributos o las propiedades de cada elemento. Una taxonomía, en cambio, es un sistema de clasificación que agrupa los elementos de contenido según características compartidas, de la misma manera que las categorías y las etiquetas agrupan las entradas de un blog. Siguiendo con el ejemplo de las propiedades, la zona o barrio, el tipo de inmueble, que puede ser piso, casa o local, o la operación, que puede ser venta o alquiler, serían taxonomías, porque son formas de clasificar las propiedades en grupos, y muchas propiedades pueden compartir el mismo valor, como todas las que están en la misma zona o todas las que son pisos. Las taxonomías permiten filtrar y navegar el contenido por esos criterios de clasificación, generando además páginas de archivo que agrupan todos los elementos de una misma clasificación. La forma sencilla de distinguirlos es preguntarse si el dato en cuestión es un valor propio y específico del elemento, en cuyo caso es un campo personalizado, o si es una forma de agrupar y clasificar varios elementos, en cuyo caso es una taxonomía. Confundirlos es un error frecuente que lleva a modelar mal el contenido, por ejemplo intentando usar un campo personalizado para algo que en realidad debería permitir filtrar y agrupar, que es tarea de una taxonomía, o creando una taxonomía para un dato único que en realidad es un simple atributo. Elegir correctamente entre campo y taxonomía para cada pieza de información es clave para que el modelo de contenido sea coherente y funcione bien.
¿Cuándo conviene usar un Custom Post Type y cuándo no?
Conviene usar un Custom Post Type cuando se necesita gestionar un contenido que tiene una identidad y una estructura propias y que se repetirá con cierta cantidad de elementos, mientras que no conviene usarlo cuando se trata de contenido puntual o de unas pocas páginas estáticas, ya que en ese caso sería una complicación innecesaria. El criterio principal para decidirlo es preguntarse si el contenido en cuestión merece ser tratado como un tipo propio, separado de las entradas del blog y de las páginas estáticas. Un tipo de contenido personalizado es la opción adecuada cuando el contenido cumple varias condiciones: tiene una estructura propia, es decir, unos datos característicos que se repiten en todos sus elementos, como el precio y los metros de las propiedades o el tiempo y las raciones de las recetas; constituye una categoría de contenido con identidad propia que no debería mezclarse con los artículos del blog; se compone de múltiples elementos que conviene poder listar, clasificar y filtrar de forma independiente; y se beneficia de tener su propio espacio en el escritorio, sus propias taxonomías y sus propias plantillas de visualización. Ejemplos típicos en los que un tipo de contenido personalizado es la elección correcta son las propiedades inmobiliarias, los productos de una tienda, las recetas, los cursos, los eventos, los testimonios, los miembros de un equipo o las fichas de un directorio. En cambio, no conviene crear un tipo de contenido personalizado cuando el contenido no justifica esa complejidad. Si simplemente se necesitan unas pocas páginas estáticas, como las secciones institucionales de una web, las páginas normales son la opción adecuada. Si se trata de artículos cronológicos, las entradas cumplen perfectamente su función. Crear un tipo de contenido personalizado para algo que no lo necesita es un caso de sobreingeniería, que añade complejidad al sitio sin aportar beneficios y que hay que mantener. Por tanto, la recomendación es reservar los tipos de contenido personalizados para aquellos contenidos que realmente tienen entidad, estructura y volumen propios, y utilizar las entradas y las páginas para lo que fueron diseñadas cuando el contenido encaja de forma natural en ellas. Tomar esta decisión correctamente desde el principio evita tanto el desorden de forzar todo en entradas y páginas como la complejidad innecesaria de crear tipos personalizados para todo.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Diseño y programación web. Desarrollo con WordPress.
- Underc0de, blog. Blog de Underc0de. Personalización de WordPress.
Documentación oficial
- WordPress.org. Post Types. Documentación de desarrollo de tipos de contenido.
- WordPress.org. register_post_type(). La función para registrar un CPT.
- WordPress.org. Taxonomies. Taxonomías personalizadas.
- WordPress.org. Metadata. Metadatos y campos personalizados.