Cómo Crear Custom Post Types en WordPress

Escrito

Revisado: 4 de junio de 2020

Es normal con el tiempo, con el aumento de nuestros conocimientos o porque nuestras necesidades cambien la instalación por defecto de WordPress se nos quede corta.

A continuación, te explicamos cómo se puede conseguir aumentar las funcionalidades de WP creando Custom Post Types bien sea con código o con un plugin.

Si eres veterano con este CMS y como ya os hemos comentado con anterioridad, es importante utilizar los mínimos plugins posibles, para mantener lo más limpia posible la instalación. Aquí te enseñamos a modificar el código a través del plugin que te comentamos, por si no te atreves a modificar el código a mano.

Por supuesto, como siempre que modificamos los archivos de nuestro WordPress, te recomendamos realizar una copia de seguridad antes del sistema por si ocurriera algún fallo. En principio no debería de haber problema, pero algunas veces las casualidades ocurren ¿no? Por eso mejor ser precavido. En casa decían “Hombre/mujer precavido/a vale por dos”, ya sabes qué hacer para duplicar tu valor. Jajaja.

¿Qué son y para qué sirven los custom post types?

En el panel de WordPress por defecto aparecen las siguientes opciones en la tabla de la base de datos: Entradas, páginas, adjuntos, revisiones y menús de navegación. Nosotros, dependiendo de nuestras necesidades, podemos añadirle nuestras propias entradas en la tabla de base de datos, por ejemplo: propiedades, coches o productos.

Pero, ¿esto no se logra con las categorías y etiquetas de las entradas de nuestro blog? En realidad, sí, es una forma de conseguirlo, pero es mucho más difícil de lograr una buena estructura y jerarquización. Por no mencionar que puede dificultar la gestión del blog.

Por esta razón, nosotros te aconsejamos la creación de Custom Post Types (CPTs) para ayudar a la gestión y organización del blog, y así crear tipos de post personalizados.

Y con esto, podemos proceder a crear nuestros propios estilos ¡Vamos a por ello!

Si vas a apostar por hacerlo a través de un plugin, sigue leyendo. Si por el contrario te vas a lanzar como buen aventurero a realizarlo por código, sigue leyendo más abajo, y encontrarás la manera de lograrlo.

Cómo Crear Custom Post Types en WordPress 1

Crear Custom Post Types mediante el plugin Custom Post Type UI

Existen varios plugins para crear CPTs, pero nosotros apostamos por Custom Post Type UI de WebDevStudios.

Este plugin, ofrece una interfaz gráfica simple e intuitiva, para crear tipos de post propios. Aquí el límite lo pone tu imaginación y tus necesidades. Pueden ser post para podcast, para contenidos de vídeo, para imágenes…

En la siguiente imagen podrás ver los campos a rellenar más importantes.

Cómo Crear Custom Post Types en WordPress 2

A continuación, te dejaremos detallados con qué datos debes rellenar cada uno de los cajetines:

  • En el cajetín de Slug, indicaremos la URL que queremos que aparezca.
  • En la etiqueta plural y singular, el nombre que desees darle a su etiqueta.
  • Dentro del apartado de las etiquetas adicionales, tendrás que ir respondiendo a las indicaciones que te ponen debajo de cada cajetín.

¿Simple verdad? ¡Sigamos con otras pequeñas indicaciones entonces!

Si queremos crear categorías y etiquetas dentro de nuestros posts personalizados los pasos a seguir son muy parecidos. Se hace click en “Añadir/Editar taxonomías” y se rellena el formulario siguiendo las indicaciones que vienen descritas debajo de cada cajetín. Es rápido y sencillo y en pocos minutos habrás creado las nuevas taxonomías y categorías para poder clasificar los contenidos deseados.

Es importante que recuerdes que para que esto funcione debes tener el plugin activado.

Labels o Etiquetas para Custom Post Types

Una vez creadas las categorías, es importante poder organizar el contenido dentro de ella y para ello son necesario las etiquetas. Pero…

¡OJO!

No hay que confundir estas Etiquetas, con las que nos ayudan a clasificar las entradas o páginas de la web, esas son diferentes.

Esta etiqueta le pone nombre a nuestro tipo de entrada. Éste aparecerá al pulsar en la barra superior “+Añadir” y seleccionemos una de las opciones.

Configurar etiquetas para mostrar en el Custom Post Types con código

Para poder realizar la configuración de las etiquetas, existen dos opciones para añadir el código, hacerlo mediante un plugin o mediante el archivo functions.php. Ya debes saber que tocar este archivo es arriesgado. Te recordamos hacer una copia de seguridad si aún no la has hecho.

En el caso de elegir la segunda opción, hay que tener en cuenta que dejará de funcionar en el momento de actualizar el tema de nuestro WordPress. Por ello nosotros te recomendamos la primera opción, hacerlo mediante plugin. Pero si, aun sabiendo esta característica, resolvemos por incluirlo de esta manera, te recomendamos crearlo dentro del child-theme (tema hijo) para que al actualizar el tema padre no se pierdan los cambios.

Si necesitas o te interesa más información sobre este tema o este tipo de entradas, te invitamos a visitar el Codex de WordPress. En él podrás encontrar la información mucho más completa para poder crear los custom post types y etiquetas. No está de más que le echases un ojo, para trabajar con mayor tranquilidad.

Nosotros, te dejamos a continuación, como un mero ejemplo, el siguiente código:

add_action( 'init', 'odon_register_custom_post_type' );
/**
 * Registro un custom post type para 'producto'.
 *
 * @link http://codex.wordpress.org/Function_Reference/register_post_type
 */
function odon_register_custom_post_type() {
    /* Añade las etiquetas que aparecerán dentro del escritorio de WordPress */
	$labels = array(
		'name'               => _x( 'productos', 'post type general name', 'text-domain' ),
		'singular_name'      => _x( 'producto', 'post type singular name', 'text-domain' ),
		'menu_name'          => _x( 'productos', 'admin menu', 'text-domain' ),
		'add_new'            => _x( 'Añadir nuevo', 'producto', 'text-domain' ),
		'add_new_item'       => __( 'Añadir nuevo producto', 'text-domain' ),
		'new_item'           => __( 'Nuevo producto', 'text-domain' ),
		'edit_item'          => __( 'Editar producto', 'text-domain' ),
		'view_item'          => __( 'Ver producto', 'text-domain' ),
		'all_items'          => __( 'Todos los productos', 'text-domain' ),
		'search_items'       => __( 'Buscar productos', 'text-domain' ),
		'not_found'          => __( 'No hay productos.', 'text-domain' ),
		'not_found_in_trash' => __( 'No hay productos en la papelera.', 'text-domain' )
	);

    /* Configura el comportamiento y funcionalidades del nuevo custom post type */
	$args = array(
		'labels'             => $labels,
		'description'        => __( 'Descripción.', 'text-domain' ),
		'public'             => true,
		'publicly_queryable' => true,
		'show_ui'            => true,
		'show_in_menu'       => true,
		'query_var'          => true,
		'rewrite'            => array( 'slug' => 'producto' ),
		'capability_type'    => 'post',
		'has_archive'        => true,
		'hierarchical'       => false,
		'menu_position'      => null,
		'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
	);

	register_post_type( 'producto', $args );
}

Si se ha hecho correctamente, al refrescar la información (Podemos pulsar la tecla F5) se deberá de poder añadir el contenido. En la siguiente imagen se puede ver cómo se ha añadió el tipo “Producto”.

Cómo Crear Custom Post Types en WordPress 3

Configurar Categorías y etiquetas de Custom Post Types con código

De igual manera, que se sucede con las entradas, se puede incluir nuestras propias taxonomías (categorías y etiquetas) a través de CPTs.

Para ello, solamente tienes que crear el nombre de la categoría que se quiere mostrar en los datos, con el siguiente código:

// Este código hay que añadirlo a la acción init (en la parte superior del functions), después llamamos a la función create_book_taxonomies() cuando inicie
add_action( 'init', 'create_book_taxonomies', 0 );  

// Creamos dos taxonomías, tamaño y color y color para el custom post type "producto"
function create_book_taxonomies() {
  /* Configuramos cómo se mostrarán las etiquetas en nuestro dashboard de WordPress */
  $labels = array(
    'name'             => _x( 'tamaños', 'taxonomy general name' ),
    'singular_name'    => _x( 'tamaño', 'taxonomy singular name' ),
    'search_items'     => __( 'Buscar por tamaño' ),
    'all_items'        => __( 'Todos los tamaños' ),
    'parent_item'      => __( 'tamaño padre' ),
    'parent_item_colon'=> __( 'tamaño padre:' ),
    'edit_item'        => __( 'Editar tamaño' ),
    'update_item'      => __( 'Actualizar tamaño' ),
    'add_new_item'     => __( 'Añadir nuevo tamaño' ),
    'new_item_name'    => __( 'Nombre del nuevo tamaño' ),
  );
  
  /* Registra la taxonomía y su jerarquía, para poder añadirle subcategorías */
  register_taxonomy( 'genero', array( 'producto' ), array(
    'hierarchical'       => true, /* aquí indicamos si queremos jerarquía (true) o no (sustituimos true por false) */
    'labels'             => $labels,
    'show_ui'            => true,
    'query_var'          => true,
    'rewrite'            => array( 'slug' => 'tamaño' ),
  ));
  
  /* A continuación puedes añadir tantas taxonomías como necesites. Para ello, copia y pega el código de arriba para cada una de las taxonomías*/
  
}

Si se ha hecho correctamente, al refrescar la información (Tecla F5 de nuevo) aparecerá la opción de clasificar los post personalizados. Si elegimos que nuestras taxonomías prescindan de jerarquía, no aparecerá la opción de categoría padre.

A continuación, a modo de ejemplo, te dejamos el código.

// Añado una segunda taxonomía, en este caso no jerárquica, como las etiquetas.
  $labels = array(
    'name'          => _x( 'Colores', 'taxonomy general name' ),
    'singular_name' => _x( 'Color', 'taxonomy singular name' ),
    'search_items'  =>  __( 'Buscar Colores' ),
    'popular_items' => __( 'Colores populares' ),
    'all_items'     => __( 'Todos los Colores' ),
    'parent_item'   => null,
    'parent_item_colon' => null,
    'edit_item'     => __( 'Editar Color' ),
    'update_item'   => __( 'Actualizar Color' ),
    'add_new_item'  => __( 'Añadir nuevo Color' ),
    'new_item_name' => __( 'Nombre del nuevo Color' ),
    'separate_items_with_commas' => __( 'Separar Colores por comas' ),
    'add_or_remove_items' => __( 'Añadir o eliminar Colores' ),
    'choose_from_most_used' => __( 'Escoger entre los Colores más utilizados' )
  );

  register_taxonomy( 'Color', 'producto', array(
    'hierarchical'  => false,
    'labels'        => $labels,
    'show_ui'       => true,
    'query_var'     => true,
    'rewrite'       => array( 'slug' => 'Color' ),
  ));

¡Y listo! Con este último código ya podrías crear Custom Post Types para tu web WordPress tanto con código como con plugin.

Como extra, te contamos que se puede personalizar los contenidos creando Custom Post Fields, pero te contaremos como en otro post. Este ya se nos fue un poco de las manos…