WP Básicos: Custom Post Type

A lo largo de muchos tutoriales y artículos hablamos sobre Custom Post Types o entradas personalizadas en WordPress. ¿Qué son? ¿Cómo crearlos? ¿Siempre son necesarios o podemos aprovechar los bloques personalizados?


por

Empezamos una serie de artículos y tutoriales donde veremos conceptos básicos de WordPress que mencionamos o tratamos bastante en otras entradas del blog y que para alguien que está empezando a trabajar con este CMS le puede ser más complicado de seguir.

¿Qué es un Custom Post Type? (CPT)

En WordPress por defecto existen varios tipos de contenido: entradas y páginas, adjuntos, menús, etc… y aunque podemos trabajar con etiquetas y categorías e incluso tipos de campo personalizados, para según que página web puede que echemos de menos poder crear otro tipo de contenido específico con características y maquetación diferente, y para eso utilizamos los Tipos de Entrada Personalizada o Custom Post Type (CPT)

Algunos tipos de entradas personalizadas muy comunes y utilizados podrían ser:

  • Productos (WooCommerce crea este tipo de entrada, por ejemplo)
  • Servicios
  • Portfolios
  • Testimonios
  • Equipo
  • Cursos y lecciones
  • Descargas

Muchos de los plugins que añadimos a nuestra web lo que hacen es crear este tipo de entradas y darle una funcionalidad y diseño específicos para forzar su visualización.

También muchos themes o plantillas los incluyen, pero ojo, lo recomendado es que estos CPT estén añadidos por plugins, no por plantillas, ya que en ese caso nos hacen dependientes de ese theme y perderemos todo el contenido añadido en esas entradas personalizadas al cambiar de plantilla.

¿Para qué utilizar Custom Post Types?

Si eres implementador o desarrollador web, utilizar CPT te va a ser tremendamente útil para preparar páginas web en WordPress más adaptadas a las necesidades del cliente a la vez que le facilitas después la introducción del contenido.

Volviendo a los ejemplos de antes, si estás preparando una web corporativa para un cliente que va a mostrar una serie de servicios que ofrece, para él va a ser mucho más fácil tener en el menú de WordPress un item «Servicios» donde pueda introducir el detalle de cada uno, y que en el front-end, en la web, se muestren directamente con el diseño que tu hayas preparado para ellos.

¿Cómo crear un Custom Post Type?

Aunque existen plugins para poder crear CTP en WordPress, yo recomiendo acostumbrarse a hacerlo con código desde el principio. No es complicado y evitaremos acostumbrarnos a un plugin más innecesario.

Un código estandar para crear, por ejemplo, un CPT para testimonios sería este:

En la documentación de WordPress tenéis el detalle de cada argumento, pero os dejo algún comentario importante:

  • La primera parte, el array de labels, son las etiquetas que añadiremos para los diferentes elementos en el admin: menús, página de listado, página de edición… (si estamos preparando una web en español para un cliente, siempre queda mejor que nos tomemos un momento para traducirlas.)
  • El text_domain es un identificador para el theme que se está utilizando. (Si no sabes cual es, puedes mirar la cabecera del archivo style.css de la plantilla donde lo indica.
  • Del listado de argumentos posterior, muchos son intuitivos y poco importantes en cuanto a funcionalidad ( la descripción, si debe mostrarse en el menú, la posición y el icono, etc…) y otros si debemos revisarlos bien:
    • supports: que elementos mostrará el editor del post
    • hierarchical: si será jerárquico como las páginas o no
    • taxonomies: que tipo de taxonomía tendrá asociada (pueden ser las tags y categories de WP o unas personalizadas, que deberemos crear aparte)
    • show_in_rest: esta se refiere a la API de WordPress, que en principio no nos afectría pero es la que permite que se cargue el editor de bloques en este tipo de entrada, por lo que debes dejarla en true

Algunos Custom Post Type se utilizan tanto que puedes tener guardado ya en tu biblioteca de código preparado con las etiquetas y características que necesites, y para otros casos, puedes utilizar GenerateWP, que te da ya el código preparado en función de los argumentos que le vas dando.

Ya tengo creado el custom post type, ¿y ahora, qué?

El problema o complejidad de las entradas personalizadas no es crearlos. Como has visto, adaptando un poco de código y añadiéndolo en el archivo en un mu-plugin o plugin personalizado ya lo tendrás listo para crear entradas de este tipo.

El problema es que una vez creados, vamos a tener que mostrarlos en la web con los estilos propios que queramos darle, vamos a querer crear un listado de este tipo de entradas, asignarle quizás unas taxonomías personalizadas, e incluso poder filtrarlos o darle una funcionalidad específica.

Todos estos pasos, iremos viéndolos en diferentes tutoriales de la serie WP Básicos para que puedas sacarle el máximo partido e implementarlos en cualquier web.

¿Bloques reutilizables o Custom Post Types?

Hace unos días veíamos que son los bloques reutilizables y lo prácticos que pueden ser para añadir el mismo tipo de contenido en diferentes sitios de una web.

Aunque no nos van a permitir sustituir los CPT en muchos casos, por las funcionalidades adicionales que igual necesitamos, en otros casos que necesitamos algo sencillo creo que si nos podemos plantear si puede ser suficiente.

Por ejemplo, en el caso que comentábamos de los testimonios, creando un tipo de bloque que muestre la opinión, nombre y foto del autor del testimonio y dándole un diseño apropiado, podríamos prescindir perfectamente de crear un CPT para ello y que el usuario lo tenga guardado para añadir en cualquier momento y sitio de su web.

Creo que es importante ir planteándo continuamente cual es la mejor forma, la más sencilla, para obtener aquello que necesitamos y no seguir haciéndolo como siempre por la costumbre y comodidad.

Por lo que si vas a crear un tipo de entrada personalizada para un contenido que no va a necesitar funcionalidades especiales, ni filtrarse o búsqueda, por ejemplo, plantéate si con un bloque reutilizable o incluso bloques personalizados puedes tener suficiente.

¿Eres implementador o desarrollador WordPress?

En la Zona DPW encontrarás más recursos, tutoriales, plantillas, y una biblioteca de snippets para poder utilizar en tu día a día y ganar tiempo en tu trabajo:

ACCEDER AHORA

Comentarios

2 respuestas a «WP Básicos: Custom Post Type»

  1. Avatar de Ismael

    |

    Puedo agregar un el Atributo de página a un CPT? YA que este atributo solo lo tienen la páginas

    1. Avatar de esther

      |

      Hola Ismael,

      Sí, pero has de tener dos cosas en cuenta, cuando creas el CPT debe tener el soporte a page-attributes:
      'supports' => array('title', 'page-attributes', 'etc...'),

      Y las plantillas que quieras que aparezcan para ese post type deben indicarlo en la cabecera
      /*
      Template Name: Some Name
      Template Post Type: CTP, page
      */

      Saludos!