Taxonomías personalizadas en WordPress

Taxonomías personalizadas en WordPress (Crear Tipos Personalizados en WordPress II)

Si hace unos días veíamos cómo crear tipos personalizados en WordPress, hoy vamos un poco más allá. En esta segunda parte de la creación de tipos personalizados, vamos a ver lo que son las Taxonomías.

¿Taxono…qué?

-Mía. Taxonomía. Son formas de ordenar o categorizar las entradas de nuestros tipos personalizados. La palabra “categorizar” nos da una pista para empezar a entenderlo: las entradas de WordPress se pueden organizar en Categorías, ¿Verdad? Bien: las Categorías de WordPress no son más que una Taxonomía llamada “Categorías” y asociada al tipo “Entrada”. Las Etiquetas de las entradas son otra Taxonomía, pero de estructura no jerárquica.

Por ejemplo. Imaginemos que tenemos el tipo personalizado “Coche” y que queremos categorizar las entradas por “Marcas” y por “Detalles”. Mientras que las Marcas van a ser siempre fijas, los Detalles parecen algo más amplio: color, ruedas, puertas, asientos… Pues entonces crearemos dos taxonomías, Marcas y Detalles. Vamos a seguir trabajando con el ejemplo visto en Tipos Personalizados.

add_action('init','crear_mis_taxonomias');
function crear_mis_taxonomias(){
    // Primero registramos la taxonomía Marcas
    register_taxonomy(
        'marcas',   // IMPORTANTE: DEBE ESTAR EN MINUSCULAS Y SIN ACENTOS NI CARACTERES EXTRAÑOS
        'mi_tipo',  // Tipo al que está asociada la Taxonomía
        array(
            'hierarchical'=>true,
            "labels"=>array(
                'name'=>'Marcas',                                           // Nombre, habitualmente en plural
                'singular_name'=>'Marca',                                   // Nombre en singular
                'menu_name'=>'Marcas',                                      // Etiqueta del menu
                'all_items'=>"Todas las Marcas",                            // A partir de aquí, son traducciones específicas para el panel de administración.
                'edit_item'=>"Editar Marca",
                'update_item'=>"Actualizar Marca",
                'add_new_item'=>"Añadir nueva Marca",
                'new_item_name'=>"Cambiar nombre de Marca",
                'parent_item'=>"Marca superior",
                'parent_item_colon'=>"Marca superior:",
                'search_items'=>"Buscar Marcas",
                'popular_items'=>"Marcas populares",
                'separate_items_with_commas'=>"Separar Marcas con comas",
                'add_or_remove_items'=>"Añadir o eliminar Marcas",
                'choose_from_most_used'=>"Elegir entre las más utilizadas"
            ),
        )
    );

    // Ahora la taxonomía Detalles. Veréis que es igual, solo cambian las traducciones y el atributo hierarchical
    register_taxonomy(
        'detalles',   // RECORDAD: DEBE ESTAR EN MINUSCULAS Y SIN ACENTOS NI CARACTERES EXTRAÑOS
        'mi_tipo',
        array(
            'hierarchical'=>false,  // En este caso, false.
            "labels"=>array(
                'name'=>'Detalles',
                'singular_name'=>'Detalle',
                'menu_name'=>'Detalles',
                'all_items'=>"Todas las Detalles",
                'edit_item'=>"Editar Detalle",
                'update_item'=>"Actualizar Detalle",
                'add_new_item'=>"Añadir nueva Detalle",
                'new_item_name'=>"Cambiar nombre de Detalle",
                'parent_item'=>"Detalle superior",
                'parent_item_colon'=>"Detalle superior:",
                'search_items'=>"Buscar Detalles",
                'popular_items'=>"Detalles populares",
                'separate_items_with_commas'=>"Separar Detalles con comas",
                'add_or_remove_items'=>"Añadir o eliminar Detalles",
                'choose_from_most_used'=>"Elegir entre las más utilizadas"
            ),
        )
    );
}

Y creamos las dos taxonomías con la función ‘register_taxonomy‘. La diferencia, además de los textos, radica en el atributo ‘hierarchical’ (jerárquico). Si lo establecemos a true, la taxonomía funcionará como las Categorías de las entradas, es decir, añadiremos marcas y podremos añadir submarcas a las marcas. Si lo establecemos en falso, la taxonomía se comportará como una lista de etiquetas.

Si ahora entramos en nuestro tipo personalizado, a la derecha, debajo del botón publicar, deberíamos ver las nuevas taxonomías. También podemos añadir y editar elementos desde el menú “Mi Tipo”, puesto que han aparecido submenús correspondientes a cada Taxonomía.

Hay que tener cuidado a la hora de crear taxonomías, pues existen ciertos tipos que son palabras reservadas de WordPress y no podemos usar. Concretamente, estos: Términos Reservados.

Ya sabemos crear taxonomías personalizadas para nuestros tipos (personalizados o no). En la próxima entrada hablaremos de las tablas de contenido personalizado, es decir, cuando hacemos click en el menú “Mi Tipo” y vemos la lista de entradas que hemos insertado, cómo modificar esa tabla, cómo añadir nuevos campos, etc.

“Crear tipos personalizados en WordPress”

“El ordenador hace exactamente lo que le pides que haga,
no lo que quieres que haga. Aprende a pedir lo que quieres.”

¿Te ha gustado el artículo?
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 sobre 5)
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

1 Comentarios

Antonio

Hola, buen artículo y bastante claro, el problema viene cuando quieres mostrar un tipo personalizado filtrado por esas taxonomias customizadas. Llevo días buscando una solución y todas me parecen harto complicadas para la sencillez de la tarea a realizar. Te pongo mi ejemplo por si puedes ayudarme o pasarme algún enlace: Tengo un tipo personalizado films, en el que he añadido la taxonomía genre, entro en films y puedo ver la caja para añadir generos a la película. Dentro de archive-films.php puedo listar todas las taxonomías creadas, pero cuando clico en alguna de ellas, devolviendome web.com/films/categoría, aparece el contenido del index y en el title de la página aparece "Nothing found for.." No se si he de crear un archivo taxonomy-genre.php o debería "reutilizar" el propio de films para que además pudiera coger la taxonomía, pero como te digo, llevo días buscándole una solución y todas me parecen demasiado complejas además de que no consigo que me funcione... Gracias y un saludo ;)