Categorías y tags en los post type de WordPress

- julio 19, 2017

En un anterior artículo explique como podemos crear un post type personalizado para lo que necesitemos, de una manera rápida y muy sencilla sin utilizar plugins y desde nuestro archivo functions.php  ⇒ Creando un post type personalizado con WordPress

Este nuevo artículo es una continuación del mencionado anteriormente donde explicare como podemos crearle categorías y tags a los post type creados de manera independiente a las entradas (posts), con esto podremos personalizar aun mas nuestro WordPress.

WordPress guarda en su Codex la función llamada register_taxonomy la cual nos permite registrar o crear nuevas taxonomías para ser utilizadas de manera publica o privada.

Esta función añade o sobre escribe una taxonomía. Recoge un nombre, un nombre de objeto que afecta y una matriz de parámetros. No devuelve nada.

<?php register_taxonomy( $taxonomy, $object_type, $args ); ?>

Como podemos crear una taxonomía básica para nuestro post type “book” creado anteriormente:

// Creamos la taxonomía Genero para Books
add_action( 'init', 'crear_book_taxonomy' );

function crear_book_taxonomy() {
  register_taxonomy(
    'genero', // Nombre de la taxonomía
    'book', // Nombre del post type que se le asignará
    array(
      'label' => __( 'Genero' ),
      'rewrite' => array( 'slug' => 'genero' ),
      'hierarchical' => true,
    )
  );
}

De esta manera ya podremos observar nuestra taxonomía creada llamada Genero

Categorías y tags en los post type de WordPress 0

De igual forma funcionaria para crear etiquetas independientes para Books solo que con algunos ligeros ajustes.

// Creamos taxonomía tags para Books
add_action( 'init', 'crear_book_taxonomy_tags' );

function crear_book_taxonomy_tags() {
  register_taxonomy(
    'tag_book', // Nombre de la taxonomía
    'book', // Nombre del post type que se le asignará
    array(
      'rewrite' => array( 'slug' => 'tag_book' ),
      'hierarchical' => false,
      'update_count_callback' => '_update_post_term_count',
    )
  );
}

Nota: recuerden que las taxonomías de Categoría y Tags se comportan de forma diferente, los invito a darse una pasada por la documentación: https://codex.wordpress.org/Function_Reference/register_taxonomy

Luego de ya conocer la forma mas básica de como crear nuestras taxonomías veremos formas mas avanzadas de hacerlo y la cual yo recomiendo.

Como crear una taxonomía para categorizar nuestros libros por género:

// Ahora vamos a agregar categorías personalizadas (estas actúan como categorías)
  register_taxonomy( 'genero', 
    array('book'), /* Agregue el post type al cual le asignara la taxonomía */
    array('hierarchical' => true,     /* Si es true actua como categoria - si es false como etiqueta */
      'labels' => array(
        'name' => __( 'Géneros', 'andres-dev' ), /* Nombre de la taxonomía */
        'singular_name' => __( 'Género', 'andres-dev' ), /* Nombre en singular de la taxonomía */
        'search_items' =>  __( 'Buscar géneros', 'andres-dev' ), /* Título para buscar taxonomías */
        'all_items' => __( 'Todos los géneros', 'andres-dev' ), /* Listado de item de taxonomía */
        'parent_item' => __( 'Género padre', 'andres-dev' ), /* Título del padre de la taxonomía */
        'parent_item_colon' => __( 'Género padre:', 'andres-dev' ), /* Título del padre de la taxonomía */
        'edit_item' => __( 'Editar género', 'andres-dev' ), /* Editar una taxonomía */
        'update_item' => __( 'Actualizar género', 'andres-dev' ), /* Actualizar el título de una taxonomía */
        'add_new_item' => __( 'Agregar nuevo género', 'andres-dev' ), /* Agregar nueva taxonomía */
        'new_item_name' => __( 'Nuevo género', 'andres-dev' ) /* Título de la nueva taxonomia */
      ),
      'show_admin_column' => true, 
      'show_ui' => true,
      'query_var' => true,
      'rewrite' => array( 'slug' => 'genero' ),
    )
  );

Como crear una taxonomía para asignarle tags a nuestros libros:

// Ahora vamos a agregar etiquetas personalizadas
  register_taxonomy( 'tags_book', 
    array('book'), /* Agregue el post type al cual le asignara la taxonomía */
    array('hierarchical' => false,    /* Si es true actua como categoria - si es false como etiqueta */
      'labels' => array(
        'name' => __( 'Tags books', 'andres-dev' ), /* Nombre de la taxonomía */
        'singular_name' => __( 'Tag', 'andres-dev' ), /* Nombre en singular de la taxonomía */
        'search_items' =>  __( 'Buscar tags', 'andres-dev' ), /* Título para buscar taxonomías */
        'all_items' => __( 'Todos los tags', 'andres-dev' ), /* Listado de item de taxonomía */
        'parent_item' => __( 'Tag padre', 'andres-dev' ), /* Título del padre de la taxonomía */
        'parent_item_colon' => __( 'Tag padre:', 'andres-dev' ), /* Título del padre de la taxonomía */
        'edit_item' => __( 'Editar tag', 'andres-dev' ), /* Editar una taxonomía */
        'update_item' => __( 'Actualizar tag', 'andres-dev' ), /* Actualizar el título de una taxonomía */
        'add_new_item' => __( 'Agregar nuevo tag', 'andres-dev' ), /* Agregar nueva taxonomía */
        'new_item_name' => __( 'Nuevo tag', 'andres-dev' ) /* Título de la nueva taxonomia */
      ),
      'show_admin_column' => true,
      'show_ui' => true,
      'query_var' => true,
    )
  );

Luego de haber creado nuestros dos tipos de taxonomía es necesario que nuestro post type “book” tenga soporte para las mismas, por lo que debemos de registrarlas con la función register_taxonomy_for_object_type, de la siguiente forma.

/* Registra soporte para categorías al post type book */
register_taxonomy_for_object_type( 'category', 'book' );

/* Registrar soporte para tags al post type book */
register_taxonomy_for_object_type( 'post_tag', 'book' );

Esto registrará para “book” el soporte para la utilización de categorías y tags.

Y con esto podemos dar por terminada nuestra sección de como crear Categorías y Tags (Taxonomy) independientes para cada post type, pero…

Como mostramos los post type en el single-book.php

Así como los posts que son un tipo de post type generan una url como esta http://localhost/rest/hola-mundo/ los post type que creamos adicionalmente también la tendrán como por ejemplo si es el caso del siguiente.

Categorías y tags en los post type de WordPress 1

En las entradas o posts de WordPress es posible configurar su apariencia a nivel del código desde la plantilla single.php los post type al momento de ser creados agregan a la base de datos la posibilidad de crear también una plantilla independiente para estas, la cual es necesario crearla en la carpeta de nuestra plantilla principal (theme) de la siguiente forma:

Llamando la palabra single- seguido del nombre de nuestro post type book, quedando de la siguiente manera single-book.php

Dentro de este archivo podremos ahora llamar el loop de WordPress como lo hacemos comúnmente.

En mi caso seria algo así

<?php get_header( ); ?>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php the_title(); ?>

<?php the_content(); ?>

<?php endwhile; else : ?>
<p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>

<?php get_footer(); ?>

Notase que no es necesario realizar un query como lo hicimos anteriormente para mostrarlo en una página o entrada.

Como mostramos los post type en la página de taxonomía (categorías)

Las taxonomías también generan una url especializada para cada una, donde podemos consultar el listado de post type creados desde una url en especifico y ajustar su plantilla también.

Para el ejemplo que hemos trabajado se genera una url como la siguiente:

http://localhost/rest/genero/literatura/

Donde genero seria el nombre de nuestra taxonomía creada.

Y literatura seria uno de los géneros creados desde el admin de WordPress que tiene asignado determinados post type (Book 1).

Para las páginas de taxonomía también podemos crear una plantilla para configurarlo mucho mejor y se comporta muy parecido al single-book.php.

En este caso debemos de crear un archivo llamado taxonomy-genero.php notase que al principio lleva la palabra taxonomy- seguido del nombre de la taxonomía creada genero, en esta plantilla que agregamos a nuestro tema también es necesario llamar un loop muy similar al de la plantilla de categorías category.php o archive.php donde se mostrara el listado de los post type agregados a esas categorías.

En nuestro proximo artículo veremos como realizar un query combinando post type con las taxonomías aprendidas en este.

Si te ha gustado no olvides compartirlo con todos 😃.


Recibirás cada semana todas nuestras actualizaciones
Puedes estar tranquilo que nunca te enviaremos SPAM
SOBRE EL AUTOR

Desarrollador web (Wordpress Expert) PHP, HTML5, CSS3, LINUX y muchos más...

¿Tienes un proyecto en mente? Hagámoslo real

CONTACTAR
Ebook-eBook – Funciones más Útiles para WordPress

Descarga el eBook GRATIS!

eBook – Funciones más Útiles para WordPress