Blog personal de IT, viajes y otros hobbies

imagen destacada del artículo custom post type ui

Crea tus Custom Post Types sin programar

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

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

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

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

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:

CampoFunció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

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

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:

CampoFunción
Menu NameNombre para el menú del administrador de WordPress.
All ItemsTexto para el enlace de «todos los ítems» presente en el submenú del Custom Post Type.
Add NewTexto para agregar un nuevo registro del Custom Post Type.
Add New ItemTexto utilizado en la esquina superior izquierda en el formulario de alta del Custom Post Type.
Edit ItemTexto utilizado en la esquina superior izquierda en el formulario de edición del Custom Post Type.
Search ItemTexto utilizado en el botón de búsqueda en la página de listado de los Post Types.
Etiquetas del Custom Post Type

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:

CampoFunción
Has ArchiveEsta 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».
custom post type ui has archive
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 PositionSe 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 IconPodemos 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 TaxonomiesSi 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.
Relación de taxonomías con el Custom Post Type

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

Carga de datos con Custom Post Type UI

resultado en frontend con el plugin 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.

Anterior

Revisión de plugin – Embed Can I Use

Siguiente

¿Cómo crear taxonomías en WordPress?

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

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

    • 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!

  3. 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. 🙂

    • 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

  4. 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!

    • 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Funciona con WordPress & Tema de Anders Norén