Los tipos de posts personalizados de WordPress son características poderosas. Son lo que eleva a WordPress de una humilde herramienta de blogs a un sistema de gestión de contenidos, y le dan la flexibilidad necesaria para crear un sitio web a medida.

Pero pueden causar confusión: ¿qué son exactamente los tipos de posts personalizados de WordPress? ¿En qué se diferencian de los mensajes y páginas estándar? ¿Cómo se crean? Y una vez que haya creado un tipo de post personalizado, ¿cómo lo añade, lo muestra en su sitio y cómo lo almacena WordPress?

En este artículo, le mostraré exactamente cómo funcionan los tipos de posts personalizados de WordPress. Los compararé con los tipos de posts con los que usted podría estar más familiarizado, le enseñaré cómo crearlos y le mostraré cómo usar los archivos de plantillas de temas para mostrarlos en su sitio.

Específicamente, cubriré:

¡Así que empecemos!

¿Qué son los tipos de posts personalizados en WordPress?

Probablemente es más fácil explicar qué son los tipos de mensajes personalizados en WordPress explicando primero un concepto más amplio: los tipos de mensajes.

Los tipos de mensajes son formas de categorizar diferentes tipos de contenido en WordPress. Supongo que ya está familiarizado con los dos tipos de mensajes más comunes: mensajes y páginas. Pero lo que tal vez no sepa es que WordPress también viene con algunos otros tipos de entradas.

Publicar tipos que vienen en un paquete con WordPress

WordPress viene con siete tipos de mensajes:

  • Posts
  • Páginas
  • Archivos adjuntos
  • Revisiones
  • Menús de navegación
  • CSS personalizado
  • Conjuntos de cambios

Lo más probable es que nunca haya oído hablar de los conjuntos de cambios y puede utilizar CSS personalizados en su sitio, pero no se le ha ocurrido que podrían ser tipos de mensajes.

Para la mayoría de los usuarios y desarrolladores de WordPress, los únicos tipos de mensajes de los que debe ocuparse son los cinco primeros: mensajes, páginas, archivos adjuntos, revisiones y menús de navegación.

Echemos un vistazo a cada uno de esos tipos de mensajes para que podamos entenderlos mejor.

WordPress Tipos de mensajes: Posts

El «post» es el tipo de post que más usará en WordPress. Los mensajes son de contenido dinámico: están diseñados para ser actualizados regularmente. Puede agregarles categorías y etiquetas, lo que significa que se mostrarán en varias páginas de archivo, y también aparecerán en su página de inicio o en la página de su blog. Por lo general, sus mensajes constituirán la mayor parte del contenido de su sitio.

Nota: En WordPress, «post» significa dos cosas. En la base de datos, un mensaje es un mensaje de cualquier tipo, por lo que incluirá páginas, archivos adjuntos y todo lo demás. Cuando hablamos de posts, nos referimos a los posts de nuestro blog, que pertenecen al tipo «post».

WordPress Tipos de mensajes: Páginas

Si ya tiene un sitio de WordPress, las páginas son el otro tipo de contenido con el que estará familiarizado. Son contenidos estáticos, diseñados para permanecer más tiempo que los posts y para proporcionar información sobre el tipo de cosas que no cambian tan a menudo. Un buen ejemplo son sus datos de contacto o la página «Quiénes somos» de un sitio web empresarial.

Las páginas no pueden tener categorías o etiquetas y no están diseñadas para ser mostradas en páginas de archivo. En su lugar, los visitantes tendrán acceso a ellos a través de su menú de navegación.

Nota: En la jerga de Internet, una página puede significar cualquier tipo de página en su sitio web. Cuando Internet se desarrolló por primera vez, consistía únicamente en contenido estático que tenía que ser codificado directamente mediante la escritura de HTML. Así que una «página web» puede ser cualquier tipo de página en su sitio, incluyendo una página estática en términos de WordPress, una página de archivo, o un post. En este artículo, cuando me refiero a páginas, me refiero a la página en términos de WordPress, es decir, una página estática. A veces me referiré a páginas de archivo, pero no son páginas en el sentido de que se crea una página para almacenarlas. WordPress lo hace por ti.

WordPress Tipos de mensajes: Archivos adjuntos

Un archivo adjunto es un elemento multimedia que se ha subido a su sitio. En la base de datos de WordPress, no se trata del archivo de medios en sí, sino de los datos relacionados con él. Por lo tanto, cada archivo adjunto tendrá un ID y metadatos únicos como su título, descripción, texto ALT, y más.

Cada archivo adjunto también tiene su propia página de archivos adjuntos con una URL única. Puede encontrar la URL para esto a través de la pantalla de edición de medios para ese archivo adjunto:

La pantalla de edición de archivos adjuntos en WordPress
La pantalla de edición de archivos adjuntos en WordPress

Los archivos adjuntos pueden ser de cualquier tipo: imágenes, vídeos, archivos pdf y más. Puede acceder a ellos y editarlos a través del elemento Media en el menú de administración de WordPress, o puede subirlos directamente a los posts/páginas cuando los estés editando. Cualquier archivo adjunto que subas a un mensaje estará disponible para editarlo y visualizarlo a través del menú multimedia.

WordPress Tipos de mensajes: Revisiones

Ahora estamos llegando a los tipos de mensajes un poco más oscuros.

Cada vez que guarde una nueva versión de un mensaje, página, archivo adjunto o cualquier tipo de mensaje personalizado, WordPress creará una revisión para reflejar esa versión del mensaje (o página, etc.).

Puede ver las revisiones de cualquier entrada o página de su sitio yendo a la pantalla de edición correspondiente y abriendo la pestaña Documento a la derecha. Aquí verá una notificación diciéndole cuántas revisiones tiene esta entrada. Abajo puede ver una captura de pantalla de un post que estoy editando y que actualmente tiene cinco revisiones.

Revisiones en la pantalla de edición posterior de WordPress
Revisiones en la pantalla de edición posterior de WordPress

Si no está utilizando el editor de Gutenberg, puede acceder a las revisiones desplazándose hasta la parte inferior de la pantalla de edición y encontrando una lista de ellas aquí:

Revisiones en la pantalla clásica de edición posterior de WordPress
Revisiones en la pantalla clásica de edición posterior de WordPress

Si hace clic en el cuadro Revisiones, le llevará a una pantalla que mostrará las dos últimas versiones de tu mensaje. Desde aquí puede retocar las revisiones y volver a una versión anterior del mensaje.

WordPress creará muchas revisiones para su sitio con el tiempo, lo que significa que la base de datos estará llena de ellas (aquí está la guía de Kinsta sobre cómo manejar las revisiones para un rendimiento más rápido)! Pero las revisiones son un tipo de mensaje como cualquier otro, y se almacenan de la misma manera – más de lo cual en breve.

WordPress Tipos de mensajes: Menús de navegación

Los menús de navegación, o más precisamente, los elementos de sus menús de navegación, son también un tipo de mensaje.

Cada elemento del menú de navegación se almacena como un elemento de la base de datos. Gracias a sus metadatos, WordPress sabe que se trata de un elemento del menú de navegación, exactamente en qué parte del menú de navegación debería aparecer y a qué parte del mismo se vincula.

No puede editar los elementos del menú de navegación de la misma manera que lo harías con otros tipos de publicaciones. En su lugar, puede tratarlos mediante el Customizing o la pantalla de menús.

WordPress Tipos de mensajes: CSS personalizado

Si agrega CSS personalizado a través del Personalizador, su trabajo se guardará utilizando este tipo de mensaje personalizado. Un nuevo mensaje (del tipo «CSS personalizado») se guardará para el CSS personalizado relacionado con cada tema de su sitio, y WordPress sólo utilizará el del tema actualmente activo.

WordPress Tipos de mensajes: Conjuntos de cambios

Los conjuntos de cambios se parecen a las revisiones, pero en lugar de aplicarse a los mensajes, se aplican al Personalizador. Cuando realice un cambio utilizando el Personalizador, se guardará como un conjunto de cambios, de forma similar a un borrador.

Ahora que hemos trabajado a través de todo el espectro de tipos de post de WordPress, vamos a seguir adelante para saber más acerca de los tipos de post personalizados de WordPress.

La diferencia entre un post y un tipo de post personalizado

Recapitulemos rápidamente: un post puede ser una de dos cosas.

Un tipo de post es un tipo de publicación (en el sentido más amplio) al que pertenece un determinado elemento de contenido. Y una «publicación» es un tipo de post, como la «página», «archivo adjunto» o cualquier tipo de post personalizado que registre (lo sé, es confuso, pero profundizaré en un minuto).

Por otro lado, un post personalizado no es un tipo de «publicación» en el sentido de un post de blog. Es un tipo de post en el sentido de todos los posts (de todos los tipos de posts) que se almacenan en la base de datos.

WordPress Custom Post Types: Usos comunes

Así que ahora sabemos lo que es un tipo de post personalizado. Pero, ¿cuándo podría necesitar usar uno? La respuesta es siempre que quiera añadir contenido a su sitio que no encaje en uno de los tipos de mensajes incorporados.

Algunos ejemplos comunes de tipos de posts personalizados son:

Estos son algunos de los casos de uso más comunes, pero no son los únicos. Mi consejo a la hora de decidir si utilizar un tipo de mensaje personalizado para cualquier nuevo tipo de contenido es que le haga esta pregunta:

¿Quiero mostrar mi nuevo contenido en la página principal del blog o como una página estática, o quiero poder mostrarlo en una página de archivo separada?

En algunos casos, el uso de una categoría para separar el nuevo contenido puede ser suficiente: tal vez esté ejecutando un blog y quiera incluir estudios de caso que puede mostrar en su propia página (utilizando una categoría de «Estudio de caso» que usted cree) y también en el blog principal. Pero si quiere mantener su nuevo contenido separado de las entradas de su blog, entonces tiene sentido crear un tipo de entrada personalizado.

Cómo se almacenan los tipos de posts en WordPress

Los posts de un tipo de mensaje personalizado se almacenan de la misma manera que los posts estándar (y páginas, etc.). Echemos un vistazo a esto con más detalle.

Su sitio de WordPress tiene un número de tablas de base de datos para almacenar el contenido y la configuración. El número mínimo de tablas es de 12, pero su sitio puede tener más si está ejecutando Multisite o si tiene un plugin instalado que agrega más tablas.

Tablas de la base de datos WordPress
Tablas de la base de datos WordPress

En la captura de pantalla de arriba, puede ver que hay dos tablas que parecen tener algo que ver con los posts: wp_posts y wp_postmeta.

La tabla wp_posts almacena todo el contenido de sus mensajes, de todos los tipos de mensajes. Así que no importa si estamos hablando de una entrada de blog, una página, una revisión, un archivo adjunto o un tipo de entrada personalizado: todos se almacenarán en esta tabla wp_posts.

WordPress sabe qué tipo de mensaje es cada mensaje porque tendrá un valor en el campo post_type en la tabla wp_posts. Este valor corresponderá al nombre del tipo de post. Así que cuando añada una nueva entrada al blog, WordPress añadirá una entrada a la tabla wp_posts, con el tipo post_de «post.» Y si registra un tipo de mensaje personalizado llamado «producto,» por ejemplo, cada nuevo producto que cree generará una línea en la tabla wp_posts con «producto» como valor en el campo post_type.

La tabla wp_postmeta es para almacenar metadatos sobre sus mensajes. Tiene cuatro campos:

  • meta_id: el id de este ítem en la tabla wp_postmeta.
  • post_id: el mensaje al que corresponde este elemento de metadatos. Un post puede tener múltiples líneas en la tabla wp_postmeta.
  • meta_key: la clave para este tipo particular de metadatos. Por ejemplo, para una página estática, una clave potencial podría ser page_template, que indicaría qué plantilla de página se está utilizando.
  • meta_value: el valor del campo. Si una página (para usar este ejemplo de nuevo) está usando la plantilla de página por defecto, el meta_valor aquí sería ‘default’.

Por lo tanto, los tipos de metadatos almacenados para un mensaje determinado serán diferentes dependiendo del tipo de mensaje que se trate.

No necesitas preocuparte por qué datos se almacenan en wp_postmeta y qué datos se almacenan en wp_postmeta: pero es útil entender que todos los tipos de mensajes se almacenan en el mismo lugar, ya que eso significa que WordPress puede trabajar con todos ellos de la misma manera.

¿Cómo Interactúan los Tipos de Posts Personalizados con las Taxonomías Personalizadas y los Campos Personalizados?

Antes de pasar a ver cómo registrar un tipo de post personalizado en WordPress, identifiquemos cómo un tipo de post personalizado interactuará con otros tipos de contenido personalizado, a saber, taxonomías personalizadas y campos personalizados.

Taxonomías personalizadas

Las taxonomías de WordPress se utilizan para categorizar mensajes de cualquier tipo. Para los mensajes estándar, las dos taxonomías utilizadas son categorías y etiquetas.

Al registrar su tipo de post personalizado, puede elegir asignarle cualquier taxonomía o taxonomías existentes. Puede añadirle la taxonomía de «categoría» cuando registre la taxonomía. Le mostraré cómo hacerlo en breve cuando le muestre la técnica para crear un tipo de mensaje personalizado.

Alternativamente, puede crear taxonomías completamente nuevas para su tipo de post personalizado, que también es un enfoque común.

Así, por ejemplo, si está creando un tipo de post de «producto» para un sitio de comercio electrónico, puede crear una taxonomía de «departamento» para clasificar sus productos en departamentos en su tienda.

Si está creando un tipo de post de «evento», puede crear una taxonomía de «tipo de evento», que podría especificar si se trata de un concierto, una lectura de poesía o una noche de comedia.

Las taxonomías que crea dependen de usted y dependerán de la forma en que quiera ordenar y mostrar sus mensajes a partir de tu tipo de mensaje personalizado.

Custom Fields

Otro tipo de contenido personalizado que tiene en WordPress son los campos personalizados, también conocidos como metadatos de postproducción. Los campos personalizados son metadatos adicionales que puede aer agregado a cualquier post siempre y cuando el tipo de post lo admita. Al registrar un tipo de post personalizado, puede incluir soporte para campos personalizados en esta línea:

supports => array( 'custom-fields' );

Esto se pasa como un array para que pueda añadir soporte para múltiples opciones.

Así que si quiere añadir metadatos a su tipo de post personalizado, como tallas o colores en una tienda de ropa con el tipo de mensaje «producto», utilizarás un campo personalizado para hacerlo.

Los campos personalizados son diferentes de las taxonomías personalizadas porque no se utilizan para generar una página de archivo.

Aquí hay un ejemplo de una tienda de ropa. Tendría una página de archivo para cada ejemplo de una taxonomía de «departamento», por ejemplo, «Mujer», «Hombre», etc. Imagine que también tiene un campo personalizado llamado «Tamaño». No crearía una página de archivo para cada tamaño, ya que no es algo que sus clientes esperarían ver.

Siga esta regla para determinar si necesitas usar una taxonomía personalizada o un campo personalizado para añadir más datos a tu mensaje: ¿necesitarás mostrarlo en una página de archivo?

Le mostraré cómo generar páginas de archivo para tu tipo de mensaje personalizado y taxonomías personalizadas más adelante.

¿Cómo Agregar un Tipo de Post Personalizado con un Plugin?

Así que usted sabe lo que son los tipos de posts personalizados y sabe que necesita uno para su sitio: ¿cómo lo agrega?

Hay dos maneras: usando un plugin, y codificándolo manualmente. Empecemos con la ruta de los plugins.

Hay dos tipos de plugins que puede utilizar para registrar un tipo de mensaje personalizado: el primero registrará un tipo de mensaje personalizado para añadir la funcionalidad que viene con el plugin, y el segundo le proporcionará una interfaz que puede utilizar para crear su propio tipo de mensaje.

El primer ejemplo incluye una variedad de plugins incluyendo plugins de comercio electrónico, plugins de eventos, y más. Comencemos con uno de los plugins de WordPress más populares, WooCommerce.

¿Cómo usar WooCommerce para registrar tipos de posts personalizados?

WooCommerce es un ejemplo de un plugin que registra un tipo de post personalizado para poder trabajar. En este caso, es el tipo de poste «producto».

Productos listados en WooCommerce
Productos listados en WooCommerce

WooCommerce también registra algunas taxonomías y campos personalizados para que pueda organizar su tienda, incluyendo categorías de productos y etiquetas de productos. Estas son diferentes de las categorías y etiquetas que usaría para sus entradas de blog.

¿Cómo usar el plugin de calendario de eventos para registrar tipos de posts personalizados?

El plugin Calendario de Eventos es otro plugin que utiliza un tipo de post personalizado. En este caso, es el tipo de mensaje «evento».

Eventos creados por el plugin Calendario de Eventos
Eventos creados por el plugin Calendario de Eventos

El plugin añade una taxonomía que es única para los eventos: «categoría de evento». También aplica etiquetas normales a los eventos, por lo que puede usar las mismas etiquetas que usa para sus entradas de blog.

¿Cómo utilizar WP Google Maps para registrar tipos de posts personalizados?

Al igual que WooCommerce y The Events Calendar, WP Google Maps es un plugin de mapas de WordPress que registra un tipo de entrada personalizada para sus mapas.

Un mapa creado por el plugin de Google Maps de WP
Un mapa creado por el plugin de Google Maps de WP

El tipo de mensaje «mapa» funciona de forma diferente al tipo de mensaje del producto o evento en el plugin anterior porque no mostrarías una página de archivo de todos sus mapas: en su lugar, el plugin te da un código abreviado para cada mapa que creas, que incrustas en un mensaje o página de tu sitio. Pero aunque no puedas ver los mapas de la misma manera que lo harías con otros tipos de mensajes, sigue siendo un tipo de mensaje.

¿Cómo usar el plugin de interfaz de usuario personalizado de tipo Post?

Si desea registrar su propio tipo de post personalizado en lugar de uno que forme parte de la funcionalidad más amplia proporcionada por un plugin como WooCommerce, puede utilizar un plugin que le proporcione una interfaz diseñada para facilitar el registro de un tipo de mensaje personalizado.

Uno de estos plugins es el Custom Post Type UI plugin.

El plugin de interfaz de usuario Custom Post Type
El plugin de interfaz de usuario Custom Post Type

Este plugin le permite registrar sus propios tipos de mensajes personalizados usando las pantallas de administración, sin tener que escribir ningún código.

Le da un conjunto de pantallas que le permiten añadir todos los elementos de registro de un tipo de post que añadiría al usar la función register_post_type(). Para añadir un nuevo tipo de post con el plugin, vaya a CPT IU > Añadir/Editar Tipos de mensajes.

Adición de un tipo de mensaje con el complemento UI Custom Post Type
Adición de un tipo de post con el complemento UI Custom Post Type

Desde aquí, puede añadir un nuevo tipo de mensaje o editar los que ya tenga registrados.

Puede editar los ajustes para el tipo de mensaje o puede dejarlos en los ajustes predeterminados. Puede encontrar documentación completa sobre todos los ajustes y opciones para un tipo de puesto en el Codex de WordPress.

Configuración para el plugin de interfaz de usuario de tipo de puesto personalizado
Configuración para el plugin de interfaz de usuario de tipo de post personalizado

También puede utilizar el plugin para registrar una taxonomía personalizada y asignarla a su nuevo tipo de mensaje o a cualquier tipo de mensaje existente. Y cuando usa el plugin para registrar un tipo de post, puede asignarle cualquier taxonomía existente.

¿Cómo usar el plugin de Pods para registrar tipos de mensajes personalizados?

El plugin de Pods es otro plugin que le da una interfaz diseñada para permitirte registrar un tipo de mensaje personalizado sin escribir código.

Pods también le permite ampliar sus tipos de postes existentes. Así que puede añadir campos adicionales a un tipo de mensaje o taxonomía existente y editar su configuración.

Creación de tipos de mensajes con el plugin Pods
Creación de tipos de mensajes con el plugin Pods

El plugin de Pods utiliza un tipo de mensaje (‘pod’) para almacenar todas sus personalizaciones, y también le permite registrar sus propios tipos de mensajes un poco como el plugin de interfaz de usuario de tipo de mensaje personalizado, pero con una interfaz que está diseñada para guiarle a través del proceso. Esto significa que el plugin puede hacer el proceso más fácil, pero añade mucho más código a su sitio (y datos a su base de datos) que si usted mismo codificara el tipo de mensaje.

Alternativamente, si prefiere no instalar un plugin para gestionar el proceso de registro de su tipo de post, puede codificarlo usted mismo.

¿Cómo registrar su propio tipo de post personalizado en WordPress?

Si se siente cómodo escribiendo código, puede aprovechar la función register_post_type() para registrar su tipo de mensaje personalizado. Esta es la manera más eficiente de hacerlo.

Las mejores prácticas nos dicen que pongamos código para un tipo de mensaje personalizado en un plugin, en lugar de en su tema. Esto se debe a que si cambia de tema en el futuro, no querrá perder el tipo de mensaje y todos los mensajes que ha creado con ese tipo de mensaje. También significa que si actualiza su tema en el futuro, no perderá tu tipo de post.

Vamos a trabajar a través de los pasos para registrar su propio tipo de post personalizado en WordPress.

Creación de su plugin

El primer paso es crear su plugin. En la carpeta wp-content/plugins de su sitio de desarrollo o de puesta en marcha (no su sitio en vivo todavía), agregue una carpeta para su plugin. Dentro de esa carpeta, agregue un archivo PHP. Denomino al mío kinsta-register-posttype.php.

Consejo: Siempre me gusta crear un plugin dentro de una carpeta en lugar de simplemente añadir un archivo de plugin a la carpeta wp-content/plugins. De esta manera, si necesito añadir más archivos a mi plugin, como archivos include, scripts o estilos, ya tengo una carpeta lista para contenerlos.

Ahora en su nuevo archivo php, agregue el texto de apertura comentado para su plugin:

<?php
/*
Plugin Name: Register Custom Post Types
Plugin URI: http://rachelmccollin.com
Description: Plugin to register the book post type
Version: 1.0
Author: Rachel McCollin
Author URI:http://rachelmccollin.com
Textdomain: kinsta
License: GPLv2
*/

Esto le dice a WordPress (y al usuario) alguna información clave sobre el plugin:

  • Cómo se llama
  • Dónde puede encontrar más información
  • Lo que hace
  • El número de versión
  • Quién lo desarrolló y dónde puede encontrar más información sobre él
  • El dominio del texto para la internacionalización
  • La licencia, que siempre debe ser GPL.

Así que su plugin ya está configurado y si quiere, puede activarlo en las pantallas de administración. Todavía no hará nada.

Configuración de la función para el tipo de post

Ahora vamos a empezar a crear la función para registrar su tipo de mensaje. En mi ejemplo, voy a crear un tipo de post llamado «libro», ya que se trata de un sitio imaginario de reseñas de libros. Lo que utilice será obviamente diferente y dependerá para qué utilice su tipo de post personalizado.

Debajo del texto comentado, añada esto:

function kinsta_register_post_type() {

}
add_action( 'init', 'kinsta_register_post_type' );

Esta función contendrá todo el código de su tipo de mensaje personalizado. Puede que desee cambiar su nombre para añadir un prefijo propio en lugar de kinsta_. Es una buena práctica usar un prefijo en todas las funciones para no chocar con el nombre de cualquier función proporcionada por el tema o los otros plugins que esté ejecutando.

El resto del código se añadirá dentro de los corchetes de esa función.

Definición de las etiquetas para su tipo de mensaje personalizado

Ahora es el momento de definir las etiquetas para su tipo de poste personalizado:

$labels = array(
 'name' => __( ‘Books’, ‘kinsta’ ),
 'singular_name' => __( 'Book', ‘kinsta’ ),
 'add_new' => __( 'New Book', ‘kinsta’ ),
 'add_new_item' => __( 'Add New Book', ‘kinsta’ ),
 'edit_item' => __( 'Edit Book', ‘kinsta’ ),
 'new_item' => __( 'New Book', ‘kinsta’ ),
 'view_item' => __( 'View Books', ‘kinsta’ ),
 'search_items' => __( 'Search Books', ‘kinsta’ ),
 'not_found' =>  __( 'No Books Found', ‘kinsta’ ),
 'not_found_in_trash' => __( 'No Books found in Trash', ‘kinsta’ ),
);

Tendrá que cambiar el suyo si su tipo de post personalizado no es»libro». Hay más etiquetas que puede usar, pero creo que las de arriba tienden a ser suficientes para mis necesidades.

Tenga en cuenta que estoy utilizando la internacionalización en mis etiquetas para que se traduzcan al idioma local para los usuarios.

Definición de los argumentos para su tipo de post personalizado

El siguiente paso es definir los argumentos, uno de los cuales será esa serie de etiquetas que ya hemos añadido.

Debajo de las etiquetas y aún dentro de esos frenillos, agregue esto:

$args = array(
 'labels' => $labels,
 'has_archive' => true,
 'public' => true,
 'hierarchical' => false,
 'supports' => array(
  'title',
  'editor',
  'excerpt',
  'custom-fields',
  'thumbnail',
  'page-attributes'
 ),
 'taxonomies' => 'category',
 'rewrite'   => array( 'slug' => 'book' ),
 ‘show_in_rest’ => true
);

Echemos un vistazo a lo que hacen todos estos.

  • El argumento labels es el conjunto de etiquetas que ya hemos definido.
  • 'has_archive' => true habilita un archivo de tipo post para el tipo de post personalizado. Este valor por omisión es falso, así que me gusta anularlo y darme la opción de usar un archivo de tipo post (el cual le mostraré cómo usarlo en breve).
  • 'public' => true permite incluir el tipo de mensaje en los resultados de búsqueda y en las consultas personalizadas. Una vez más, el valor por omisión es falso y esto es algo que me gusta anular.
  • El valor’jerárquico’ dependerá de cómo quiera usar su tipo de mensaje personalizado. Si lo ajusta a true, entonces el tipo de mensaje se comportará como páginas, con una posible jerarquía y mensajes padre e hijo de cualquier mensaje de su tipo de post. Si lo pone en false, se comportará como un mensaje, sin jerarquía.
  • La matriz ‘supports’ define una serie de características de los tipos de puestos que puede tener este tipo de puestos de apoyo. Me gusta asegurarme de que las funciones como las imágenes destacadas y los campos personalizados estén activados.
  • El argumento’taxonomías’ define las taxonomías existentes que se aplican a este tipo de puestos. Aquí estoy usando la taxonomía de la’categoría’. Si quiere usar una taxonomía personalizada y aún no la has registrado, salta esta línea y luego registra la taxonomía en el tipo de mensaje. Si ya has registrado una taxonomía personalizada, puede añadirla al mensaje usando esta línea.
  • Estoy usando el argumento’reescribir’ porque voy a darle a la taxonomía un nombre que es diferente al que quiero usar. Explicaré esto con más detalle en breve.
  • ‘show_in_rest’ => true asegura que el tipo de mensaje está disponible para la API de REST y la interfaz de Gutenberg. Por omisión es false, lo que no tiene sentido para mí – quiero que todos mis tipos de mensajes usen la misma interfaz de edición!

Así que esos son todos los argumentos establecidos. Pero aún no hemos registrado el tipo de mensaje. Es hora de arreglar eso.

Añadiendo la función register_post_type()

El paso final es juntar todo esto en la función register_post_type().

Debajo de sus argumentos, y aún dentro de las llaves, agregue esto:

register_post_type( ‘kinsta_book', $args );

Esto registra el tipo de mensaje ‘kinsta_book’, con los argumentos que ya hemos definido.

Ahora le resultará más fácil entender por qué usé el argumento de»reescribir» antes. Me gusta añadir un prefijo a los nombres de mis tipos de mensajes, así que puedo estar seguro de que no chocarán con ningún tipo de mensaje añadido por ningún plugin de terceros, pero no quiero que el prefijo se haga público.

Por omisión, cuando WordPress muestra un ejemplo de su tipo de mensaje, utilizará el nombre del tipo de mensaje en la URL. Así que mi libro llamado’My Wonderful Book’ tendría una url de mysite.com/kinsta_book/my-wonderful-book. No quiero eso, así que uso el argumento `rewrite’ para cambiar la URL a mysite.com/book/my-wonderful-book. Se ve mucho mejor, ¿eh?

Ahora guarde su archivo y active su plugin en el administrador de WordPress. Encontrará que ha aparecido un nuevo tipo de mensaje en el menú de administración.

El tipo de post "libros" en las pantallas de administración
El tipo de post «libros» en las pantallas de administración

desde su tipo de post personalizado en la parte delantera de su sitio.

¿Cómo mostrar los tipos de posts personalizados de WordPress en su sitio?

La mayoría de los tipos de mensajes personalizados que añada a su sitio funcionarán como mensajes, lo que significa que están diseñados para ser mostrados en páginas de archivo. Tal vez está usando una taxonomía personalizada para mostrarlos, o tal vez has añadido la taxonomía de «categoría» como yo.

Alternativamente, si ha usado un plugin como WooCommerce que añade tipos de mensajes personalizados para añadir funcionalidad específica a su sitio, entonces ese plugin podría añadir algunas páginas específicas (como la página «Tienda2») diseñadas para dar salida a tu tipo de mensaje personalizado.

Las cuatro opciones que tiene para mostrar tipos de mensajes personalizados son:

  • Mostrar el mensaje individual (es decir, el libro, en mi ejemplo)
  • Mostrando el archivo completo de tipo post, con todos los libros listados.
  • Mostrar un archivo de taxonomía personalizado, utilizando una taxonomía que haya registrado para su tipo de mensaje personalizado.
  • Integrar mensajes del tipo de mensaje personalizado (por ejemplo, libros) en el archivo de una taxonomía existente, como’categoría’, o en la página principal del blog.

Echemos un vistazo a cada uno de ellos por separado.

Advertencia! Si en algún momento de este proceso no puede acceder a los archivos o mensajes individuales para su tipo de post personalizado, es porque WordPress aún no ha escrito los enlaces permanentes para ellos. Para corregir esto, veaya a Configuración > Enlaces permanentes y haga clic en el botón Guardar cambios. Esto le dirá a WordPress que compruebe si hay nuevos tipos de mensajes y cree las URLs para ellos.

Visualización del archivo de tipo de contabilización

La primera opción que tiene es crear una página de archivo de todos los mensajes en su archivo de tipo de mensaje personalizado.

Si definió’has_archive’ como verdadero cuando estaba registrando el tipo de mensaje, WordPress generará automáticamente una página de archivo para su tipo de mensaje. Puede añadirlo a su menú de navegación utilizando el Personalizador.

Adición de su archivo de tipo de mensaje al menú

Abra el Personalizador y seleccione la opción Menús. Seleccione su menú principal y haga clic en el botón Agregar elementos para agregar elementos adicionales a su menú.

Agregar un elemento de menú en el personalizador de WordPress
Agregar un elemento de menú en el personalizador de WordPress

Seleccione su tipo de mensaje de entre las opciones que aparecen y haga clic en la flecha no hacia abajo a la derecha de su nombre. Esto mostrará una lista que incluye cada uno de los mensajes que has añadido, además de una opción que en mi caso se llama Todos los libros. Haga clic en él y se añadirá a su menú.

Si luego hace clic en ese elemento del menú, puede editar la etiqueta. Prefiero no llamar al mío «Todos los libros», sino «Libros».

Edición de la opción de menú Libros
Edición de la opción de menú Libros

Tenga en cuenta que sólo puede hacerlo a través del Personalizador – no es posible en la pantalla de Menús. Así que asegúrese de usar el Personalizador para añadir su archivo de tipo de mensaje personalizado a su menú.

Personalización del archivo de tipo de contabilización

WordPress usará la jerarquía de plantillas para identificar qué archivo de plantilla del tema se utilizará para mostrar el archivo de tipo de mensaje personalizado.

La jerarquía de plantillas de WordPress
La jerarquía de plantillas de WordPress

Si el tema tiene un archivo.php, lo utilizará, y si no lo tiene, utilizará index.php.

Si desea editar la forma en que se emite el archivo de tipo de mensaje personalizado, puede crear un archivo de plantilla para el archivo de tipo de mensaje personalizado.

Para un tipo de mensaje personalizado específico, necesita crear un archivo de plantilla llamado archive-$posttype.php, donde $posttype es el nombre de su tipo de mensaje. Así que para mi tipo de publicación de libros, crearía un archivo llamado archive-kinsta_book.php.

La forma más sencilla de crear este archivo es haciendo un duplicado del archivo archive.php del tema. Renómbrelo y edítelo para que muestre tu archivo de tipo post de la forma que quiera.

Visualización de contabilizaciones individuales

Los mensajes individuales creados utilizando un tipo de mensaje personalizado también se mostrarán utilizando el primer archivo de plantilla relevante que se encuentra en la jerarquía de plantillas.

Puede ir un poco más lejos con mensajes individuales que con archivos: no sólo puedes crear un archivo de plantilla para el tipo de mensaje (single-$posttype.php), sino que también puede crear un archivo para un mensaje específico de ese tipo de mensaje usando el slug para ese mensaje (single-$posttype-slug.php).

Así que si agregaba Great Expectations a mi sitio de reseñas de libros, podría crear un archivo para todas las reseñas de libros llamado single-kinsta_book.php, o podría crear un archivo de destino para ese libro llamado single-kinsta_book-great-expectations.php. Si yo no creé ninguno de esos archivos, WordPress usaría por omisión single.php o (si eso no existiera) singular.php o index.php.

Adición de tipos de mensajes personalizados a la página principal del blog

Por omisión, la página principal de su blog sólo incluirá el tipo de mensaje»post». Pero, ¿y si también quisiera incluir su tipo de mensaje personalizado en esa página, mezclado con los mensajes del blog?

Puede hacer esto usando el gancho pre_get_posts en WordPress.

En el plugin donde registraste el tipo de mensaje, agrega esto:

<?php
function kinsta_books_on_blog_page() {
 
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( ‘post_type', array( ‘post’, ‘kinsta_book’ );
 }

}
add_action( 'pre_get_posts', 'kinsta_books_on_blog_page' ); ?>

Esto comprueba que estamos en la página de inicio (que es la página del blog, incluso si no es la página principal de su sitio) y que la consulta principal se está ejecutando (porque no quiere hacer esto en un widget, por ejemplo). Si es así, añade tanto mensajes como libros a la consulta.

Tenga en cuenta que tiene que incluir el tipo de puesto ‘post’ en la matriz, así como el nuevo tipo de puesto.

Resumen

Los tipos de post personalizados de WordPress son la característica que lo eleva de una simple plataforma de blogs a un verdadero sistema de gestión de contenidos. Le permiten crear sitios complejos y personalizados que pueden actuar como tiendas, centros de referencia, sitios multimedia o cualquier cosa que necesite.

Puede añadir tipos de mensajes personalizados a tu sitio de WordPress de una de estas tres maneras. Puede usar un plugin como WooCommerce que registra un tipo de mensaje personalizado relacionado con la funcionalidad del plugin. Puede usar un plugin como CPT UI o Pods para añadir sus propios tipos de posts personalizados. O puede escribir su propio plugin y usar la función register_post_type() para registrar el tipo de mensaje usando código. Cualquiera que sea el método que utilice, podrá obtener mucho más de su sitio de WordPress.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.