WordPress: Cómo crear un Custom Post Type sin plugin

¡Buenos días! En este artículo vamos a ver cómo crear un Custom Post Type en una web hecha con WordPress sin utilizar plugins. ¡Vamos allá!

YouTube video

Antes de todo, un muy breve resumen de qué es un Custom Post Type en WordPress (en adelante CPT) y para qué sirve.

¿Qué es un Custom Post Type?

Por defecto WordPress trae algunos tipos de posts como entradas, medios, páginas… En dos palabras, un CPT es un tipo de post que no es ni una página ni una entrada ni cualquier otro tipo de post que viene por defecto con WordPress.

En el ejemplo hoy voy a crear un CPT de portafolio para almacenar ahí los trabajos, ya que mi tema no lo trae por defecto y voy a dividirlo en dos pasos.

Paso 1: crear el código con GenerateWP

Para no escribir todo el código de cero, podemos aprovechar una maravillosa herramienta que se encarga de construir el código para diferentes elementos de WordPress según las preferencias que elijamos. Se trata de Generate WP. Así que el procedimiento sería el siguiente:

1. Accedemos a Generate WP.

2. En el apartado Tools and Generators vamos a Content > Post Type Generator.

A partir de aquí todo depende del tipo de post que vamos a generar. La herramienta es bastante intuitiva pero os dejo un pequeño resumen de lo que hace cada pestaña.

General

Aquí le vamos a dar un nombre a la función que creará este CPT, indicaremos si se añade soporte a Child Themes (si usáis uno, activarla) y  la parte de Text Domain es opcional, sirve en los casos que querráis publicar el plugin y permitir su traducción.

Post Type

Aquí la opción interesante es la de Post Type Key, ya que será la parte de la URL de definirá nuestro CPT. Por ejemplo, si tengo un portafolio, puedo poner portafolio como Post Type Key y las URLs de los trabajo serán algo como dominio.com/portafolio/trabajo-1… Las demas opciones ya se entienden bastante bien.

Labels

Esta parte es la que más palo puede dar ya que se trata de traducir todos los nombres de nuestro CPT en todas sus versiónes y lugares que va a aparecer. Simplemente cambiamos “item” por nuestro CPT (en mi caso “trabajo”) y vamos traduciéndolos uno por uno.

Options

Aquí podemos indicar qué campos tendrá nuestro CPT (título, imagen destacada…), si aparecerá en los resultados de búsqueda de la web… La más interesante aquí es la de Enable Archives ya que permite que se crea una página que tenga un listado de nuestros posts (en mi caso sería la página dominio.com/trabajos con el listado de todos los trabajos).

También podemos cambiar el slug de la URL en caso que lo queramos diferente del Post Type Key.

Visibility

Aquí indicamos quién puede ver nuestro CPT, dónde va a aparecer en el dashboard de WordPress, etc. Un detallito interesante aquí es indicar el dashicon, es decir el icono que aparecerá para nuestro CPT en en el dashboard de WordPress.

Query | Permalinks | Capabilities | Rest API

Estas pestañas podemos dejarlas por defecto ya que sirven para hacer cosas más avanzada.

Una vez creado el código, lo copiamos y pasamos al paso 2.

Paso 2: crear el snippet con el código generado

Este paso es muy simple. Ahora que tenemos el código generado debemos ejecutarlo en nuestra web. Para hacerlo os dejo 2 opciones:

  1. Insertarlo en el archivo functions.php del tema. No lo recomiendo ya que si cambiamos de tema, el CPT creado se quedará en el functions.php del tema antiguo y no se cargará.
  2. Insertarlo en el plugin Code Sippets. Recomiendo este método ya que este plugin permite insertar pequeños trozos de código que funcionarán con cualquier theme que tengamos activado.

Ahora si lo hemos hecho todo bien, nuestro CPT debe aparecernos en el panel de control de WordPress y podremos crear nuestros custom posts.

También te puede interesar

WordPress: Cómo añadir un widget area
WordPress: Cómo instalar el píxel de Facebook sin plugin
WordPress: Cómo regenerar las miniaturas o thumbnails

¿Haces webs para clientes
y te has atascado en
precios bajos?

He creado un programa formativo para ayudarte a ganar más dinero por cada proyecto, gestionar mejor a tus clientes y trabajar con orden y tranquilidad en tus servicios de diseño y desarrollo web.