WordPress puede almacenar y mostrar muchos tipos de contenido. Una unidad de este contenido es lo que denominamos «post» y todos ellos son guardados en una misma tabla de base de datos llamada wp_posts
(Si me hubiesen dado a elegir yo hubiese llamado a esta tabla wp_entities
). Estos registros de contenido se diferencian solamente por una columna llamada post_type
que especifica el tipo de dato al que pertenece. De esta manera una entrada de blog tiene el tipo de post «post», una página tiene el tipo de post «page» y una imagen que adjuntamos a un artículo tiene el tipo de post «attachment»(entre otros que existen en el core). Lo bueno de WordPress es que nos permite extender esta funcionalidad para crear nuestros propios tipo de post. Son los denominados «Custom Post Types» o «Tipos de post personalizados».

Tipos de Posts en la base de datos de WordPress
Por ejemplo: Si tienes una web de dentistas podrías tener un CPT (Custom Post Type) «Pacientes», si tienes una web para una librería podrías tener un CPT «Libros», si tiene una web para promocionar tus servicios Freelance podrías tener un CPT para tu «Portfolio» o si tienes una web para una concesionaria podrías tener un CPT «Coches». Ya vas pillando la idea, ¿No?
Cada una de estas entidades compartirán los mismos campos que vienen por defecto en las «Entradas» o «Páginas»: Título, descripción, etiquetas, categorías, fecha de escritura, estado de la publicación, permalink, etc etc. También se pueden agregar campos específicos utilizando un plugin llamado ACF (Advanced Custom Field).
El problema está en que para crear Custom Post Type necesitamos saber de programación PHP y no todos somos desarrolladores. Hay personas que se apañan buscando temas de WordPress relacionados con la temática del proyecto y que ya tienen en su código lo necesario para registrar estos Custom Post Types (algo que desaconsejo totalmente ya que de esta manera estamos ligando un Custom Post Type a un tema de WordPress), hay desarrolladores que lo programan a mano siguiendo las instrucciones del Codex y también se puede utilizar un plugin que nos facilita esta tarea con un simple entorno gráfico y en el que no tocaremos ni una línea de código de programación. En este artículo os voy a enseñar este último método para lo que utilizaremos un plugin llamado Custom Post Type UI.

Banner del plugin Custom Post Type UI
Instalación y Configuración
Instalamos el plugin desde el menú [ Plugins » Añadir Nuevo ] y luego lo buscamos con el nombre «Custom Post Type UI» como lo indica la siguiente imagen.

Cómo instalar el plugin Custom Post Type UI.
El plugin tiene su propia página de configuraciones desde donde podremos dar de alta, modificar y borrar Custom Post Types y Taxonomías como así también importar o exportar esta información (esta última funcionalidad la dejaremos para un próximo artículo del blog).

Página de configuración del plugin Custom Post Type UI
Veamos a continuación cómo podemos crear un nuevo Custom Post Type utilizando este plugin.
¿Cómo crear un CPT con el plugin Custom Post Type UI?
Después de pinchar en «Add / Edit Post Types» (sí, aún no está traducido al 100%) veremos la pantalla de la imagen del punto anterior. Tal como lo indican los asteriscos en rojo solo los siguientes tres campos son obligatorios:
Campo | Función |
Post Type Slug (obligatorio) | El nombre clave que le vamos a dar al Custom Post Type. Solo se aceptan caracteres alfanuméricos latinos en minúsculas, los espacios tienen que ser reemplazados por guiones o guiones bajos. |
Plural Label (obligatorio) | Nombre en plural que se utilizará en el menú de WordPress. |
Singular Label (obligatorio) | Nombre en singular que se utilizará en distintos links y páginas del administrador de WordPress. |
A modo de ejemplo vamos a crear la web de una concesionaria para listar todos los coches que tenemos en venta.

Ejemplo de uso del plugin Custom Post Type UI
Una vez que registremos el Custom Post Type veremos un nuevo menú «Coches» en nuestra barra de herramientas de WordPress.

Icono y textos del nuevo Custom Post Type
Estás pensando lo mismo que yo ¿No? Podríamos cambiar el icono por otro que tenga más sentido y también mejorar los textos ya que tienen mezcla de español e inglés ¡Vamos a ello!
Cómo cambiar los textos del Custom Post Type
Podremos modificar los textos de los enlaces de nuestro Custom Post Type editando la entidad «coche» que generamos en el paso anterior. Para ello debemos acceder al menú [ CPT UI » Add / Edit Post Types » Pestaña «Edit Post Types» ] y completar los campos de la sección «Additional Labels«. Detallo algunos de ellos:
Campo | Función |
Menu Name | Nombre para el menú del administrador de WordPress. |
All Items | Texto para el enlace de «todos los ítems» presente en el submenú del Custom Post Type. |
Add New | Texto para agregar un nuevo registro del Custom Post Type. |
Add New Item | Texto utilizado en la esquina superior izquierda en el formulario de alta del Custom Post Type. |
Edit Item | Texto utilizado en la esquina superior izquierda en el formulario de edición del Custom Post Type. |
Search Item | Texto utilizado en el botón de búsqueda en la página de listado de los Post Types. |

Etiquetas del Custom Post Type
Configuraciones Extras
Además de los nombres y las distintas etiquetas también podemos definir cómo se comportará el Custom Post Type en el entorno de WordPress a través de la sección de «Configuraciones«. Son muchas las opciones de configuración pero voy a detallar en la siguiente tabla aquellas que creo más importantes:
Campo | Función |
Has Archive | Esta opción nos permite tener una página en el Frontend con el listado de los Post Types que demos de alta. En este caso una página con el listado de todos los coches que registremos. Atención porque esta opción está marcada como «false» por defecto. El mismo campo incluye una caja de texto para que definamos la palabra que utilizará WordPress para mostrar dicho listado. Para el ejemplo de los coches podríamos usar «coches». ![]() |
Exclude From Search | ¿Debemos tener en cuenta este Custom Post Type para las búsquedas que realiza el usuario en el Frontend? Si la respuesta es negativa debemos marcar esta opción como «True«. |
Menu Position | Se puede modificar la posición del icono del Custom Post Type en la barra del menú del administrador de WordPress cambiado el número de esta propiedad (para más información leer el parámetro «Menu Position» en el Codex). |
Menu Icon | Podemos definir un icono personalizado especificando la URL completa o bien utilizando el nombre de la clase de los iconos que se utilizan por defecto en WordPress (Dashicon). |
Support | El editor de posts tiene muchas funcionalidades/campos que pueden estar visibles u ocultos al usuario. Algunos de estos campos son: título, cuerpo del artículo, imagen destacada, resumen, campos personalizados, comentarios, revisiones, autor entre otros. |
Built-in Taxonomies | Si queremos asociar una taxonomía a nuestro Custom Post Type esta es la opción. Por defecto incluirá las dos taxonomías estándar de WordPress: categoría y etiquetas. Pero también podemos crear nuestras propias taxonomías como veremos en un próximo artículo.![]() |
Añadiendo datos al CPT
Ya tenemos nuestro Custom Post Type «coche» registrado y con sus correspondientes configuraciones, ahora solo nos resta agregar nuevos registros y visualizarlos en el Frontend.

Carga de datos con Custom Post Type UI

Resultado en Frontend con el plugin Custom Post Type UI.
Conclusión
Como se ha visto es muy fácil generar nuestras propias entidades, no hace falta (ni se debería) buscar un tema específico que incluya este tipo de datos. En próximos artículos veremos cómo podemos generar taxonomías específicas para nuestra entidad (para los coches podríamos agregar una taxonomía llamada «marca» o «modelo») para que junto con los campos personalizados de ACF podamos tener nuestra estructura de información completa.
Rodrigo Córdoba
Gracias por tu tutorial, me sirvió bastante. Lo único que no encontré es como crear el archive.php de mi custom type para poder personalizar como se muestran las entradas con base a lo que creo en el custom type.
Rodrigo Córdoba
Mala mia, ya lo vi en el video, pero quería saber cómo hacerlo vía código
Mauricio Gelves
Me alegro que lo hayas resuelto 🙂
Rafa Ramos
Voy a crear un «WordPress de mierda» (como llamó Rafa Poveda) y voy a probar con ejemplos lo que nos enseñas. Estaría genial también aprender a dominar https://wp-types.com/es/ es una herramienta que nunca comprendí para poder manejarla.
Me das miles de ideas!!! Gracias.
Mauricio Gelves
No te decepcionará. Hay 3 plugins que son muy buenos para temas de campos personalizados:
– ACF: el que más utilizo.
– Pods: creado por los propios desarrolladores del Core de WordPress
– Toolset: que estaré haciendo una review la semana que viene.
Abrazo Rafa!
Diana
Fantástico artículo! Hay poco información tan bien explicada sobre CPT UI, así que me alegro de haber dado con tu blog.
Tengo una duda. En mi caso el plugin venía instalado por defecto en el theme WP Construct, al igual que un par de Post types ya creados con los que estoy trasteando. Tengo una página llamada «Servicios» que muestra un listado de todos los servicios, cada uno con su link con el que se accede a su página individual que te muestra la info de cada servicio.
Tengo el Post type de «Servicios» con la opción marcada de «featured image» en el apartado de «Settings> Supports». El caso es que me duplica la imagen, es decir, al subir la imagen destacada, aparece en la página donde está el listado de servicios pero también en la página individual de ese servicio. Si desmarco la opción de «Featured image» en CPT UI, me sigue apareciendo la imagen duplicada en ambos sitios. ¿Cómo hago para que no se duplique?
Espero haberme explicado correctamente.
Muchas gracias por anticipado. 🙂
Mauricio Gelves
Hola Diana, me alegro que te haya gusta el artículo.
Por lo que comentas puede ser un problema con la programación del tema. Lo he buscado en internet para saber si el tema es de un marketplace como Envato/ThemeForest o si pertenece al directorio de temas oficiales de WordPress.
Si lo has comprado, la respuesta deberá brindártela el equipo de soporte del tema. Ponte en contacto con ellos y explícales el problema.
En cambio, si el tema lo has descargado del repositorio oficial de WordPress, te sugiero que escribas más detalles del problema en los foros de soporte => https://es.wordpress.org/support/forum/manuales-y-resolucion-de-problemas/
Un saludo,
Mauricio
Alfonso
Enhorabuena por el artículo, está muy bien explicado. Muy útil.
En mi caso, tengo una duda, espero explicarla bien porque no soy muy ducho en el tema.
Mi blog es una especie de tube, por lo que todas las entradas incluyen un campo obligatorio para vídeo.
Quiero crear un tipo de entrada que no incluya el vídeo.
¿Hay algún modo de «llamar» a otro archivo en lugar de «single.php»?
En mi caso, por ejemplo:
– Llamaría a (…)/theme/single.php
– Pero yo querría llamar, por ejemplo, a (…)/theme/single-nuevopost.php
Yo en «single-nuevopost.php» habría eliminado esa obligatoriedad de utilizar el vídeo.
¿Sería esto posible? Agradezco mucho su tiempo y la ayuda. ¡Saludos!
Mauricio Gelves
Hola Alfonso, sí es posible.
La solución más simple sería crear un Custom Post Type para tus videos donde el campo para agregar el enlace o archivo del video sea siempre obligatorio.
Después puedes crear otro Custom Post Type o bien utilizar las entradas por defecto de WordPress para tus demás artículos.
Con respecto al nombre del fichero, para el primer caso puedes tener un single-video.php y para las entradas comunes utilizar el single.php o singular.php.
Te recomiendo que leas este otro artículo mío que puede darte un poco más de luz a tu inquietud => https://maugelves.com/jerarquia-de-plantillas-de-wordpress/
Un saludo,
Mauricio