Llevando las taxonomías personalizadas de WordPress al siguiente nivel

Las taxonomías personalizadas de WordPress son una excelente manera de organizar el contenido de su sitio web, pero ¿qué son exactamente? ¿Cómo se pueden implementar efectivamente? Sin embargo, lo que es más importante, ¿cómo pueden beneficiar a su sitio web? No tema, lo que está a punto de leer a continuación es la guía más completa de taxonomías personalizadas de WordPress que encontrará en Internet hoy..


Fundamentos de taxonomía personalizados

En su nivel más básico, una taxonomía es simplemente un método para agrupar cosas. Si has publicado una publicación en WordPress anteriormente, entonces es probable que ya hayas usado taxonomías. Las etiquetas y categorías estándar dentro de WordPress son consideradas taxonomías! Ahora, vamos a hablar más sobre taxonomías personalizadas. WordPress le ha permitido crear sus propias taxonomías desde la versión 2.3, sin embargo, realmente solo han comenzado a ser populares desde alrededor de la versión 2.9..

Una forma popular de explicar las taxonomías personalizadas es usar el ejemplo de las películas. Supongamos que estamos escribiendo un artículo sobre la película "Terminator 2". Lo que normalmente haríamos con las taxonomías incorporadas estándar, es clasificar el artículo usando etiquetas y categorías. El problema con las taxonomías integradas, es que son extremadamente genéricas..

Continuaremos con este ejemplo y simularemos que hemos ingresado a "Arnold Schwarzenegger" como una de nuestras etiquetas. Para aquellos que no están familiarizados con el actor austriaco, esto podría ser bastante confuso. Obviamente es el nombre de una persona, pero ¿es esta persona un actor? ¿Un director? ¿Un productor? Un enfoque mucho mejor sería crear una taxonomía personalizada llamada "Actores" y agregar el nombre de Arnold a esa taxonomía en particular. Podríamos ir aún más lejos y agregar taxonomías personalizadas adicionales para otras agrupaciones de películas típicas como géneros, directores, productores y otros..


Comprensión Condiciones

Una palabra con la que también harías bien en familiarizarte es "término". En WordPress, un término es una clasificación única que vive dentro y se define por su taxonomía. En nuestro ejemplo anterior teníamos una taxonomía llamada "Actores", por lo tanto nuestros términos serían: Arnold Schwarzenegger, Linda Hamilton, Edward Furlong, etc..


¿Cómo pueden las taxonomías personalizadas beneficiar a mi sitio web??

Las taxonomías personalizadas pueden aumentar significativamente la organización y la facilidad de uso de su sitio web. Debido a la flexibilidad que vienen con las taxonomías personalizadas, siempre serán más específicas para su tema de elección en comparación con las etiquetas y categorías. Un ejemplo obvio es incluir sus taxonomías en la parte inferior o superior de su artículo. En el siguiente ejemplo, he creado tres taxonomías personalizadas y he mostrado los términos asociados debajo del área de contenido principal del artículo..

Cool cierto? Aunque ese no es el único uso. Notará en el ejemplo anterior, que el texto parece estar hipervinculado, porque lo es. Las taxonomías personalizadas le permiten tener archivos para términos específicos. Esto no solo permite una mejor organización del contenido, sino que también permite a los usuarios suscribirse a términos específicos a través de RSS. Otro uso menos implementado para taxonomías personalizadas es simplemente usarlas como un reemplazo para las etiquetas. Decidí adoptar este enfoque exacto para un blog de juegos que lancé recientemente. No siempre tiene que resaltar el hecho de que está usando taxonomías personalizadas, solo recuerde que su poder real se encuentra dentro del potencial de archivar, buscar, consultar y estructurar las URL..

Existen otras ventajas adicionales al usar taxonomías personalizadas, pero en lugar de discutir casos de uso teóricos, veamos algunos ejemplos prácticos con código para respaldarlos..


Escribiendo nuestra primera taxonomía personalizada

Ahora que entendemos qué son las taxonomías y cómo usarlas, podemos comenzar a implementarlas en nuestros temas. Para empezar, primero registraremos nuestra taxonomía personalizada. En este ejemplo, estoy creando una taxonomía llamada "Actores". Si está siguiendo este tutorial, querrá abrir el tema de su tema. funciones.php archivar e insertar el siguiente código.

 $ labels = array ('name' => __ ('Actors', 'your-themes-text-domain'), 'singular_name' => __ ('Actor', 'your-themes-text-domain'), ' search_items '=> __ (' Search Actors ',' your-themes-text-domain '),' popular_items '=> __ (' Popular Actors ',' your-themes-text-domain '),' all_items '=> __ ('Todos los actores', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Actor', 'your-themes-text-domain'), 'edit_item' => __ ('Edit Actor ',' your-themes-text-domain '),' update_item '=> __ (' Update Actor ',' your-themes-text-domain '),' add_new_item '=> __ (' Add New Actor ', 'your-themes-text-domain'), 'new_item_name' => __ ('New Actor', 'your-themes-text-domain'), 'separate_items_with_commas' => __ ('Separate Actors con comas', 'your -themes-text-domain '),' add_or_remove_items '=> __ (' Add or remove Actors ',' your-themes-text-domain '),' Choose_from_most_used '=> __ (' Choose from most Actors '', ' tus-temas-texto-dominio ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('actores', 'post', $ args);

No se alarme por la cantidad de código aquí, todo es bastante simple cuando lo desglosa. La mayoría del código se encuentra en el $ etiquetas formación. Esta matriz define el contenido de ciertas etiquetas dentro del panel de WordPress. los $ args La matriz es donde ocurre la verdadera magia; Esto define los ajustes para la taxonomía..

Notará que para el argumento de "etiquetas" estamos pasando la matriz de etiquetas que creamos anteriormente. Otro argumento digno de mención es el argumento "jerárquico". Esto define si nuestras taxonomías tienen o no la capacidad de taxonomías anidadas o taxonomías "secundarias". En nuestro ejemplo, no necesitaremos esta funcionalidad en particular, pero tomamos nota de su existencia, ya que es posible que necesite un sistema de taxonomía granular en proyectos futuros..

Explicar cada argumento está fuera del alcance de este tutorial en particular, pero si desea saber más, siempre puede estudiar estos argumentos en detalle en el códice oficial de WordPress. register_taxonomy página.

Lo último que hay que tener en cuenta es la llamada a la register_taxonomy función. El primer argumento define el nombre de la taxonomía (esto se usa internamente dentro de WordPress). El segundo argumento define a qué tipo de publicación se adjuntará la taxonomía. En nuestro escenario, lo adjuntamos a las publicaciones estándar de WordPress. Alternativamente, puede adjuntarlo a un tipo de publicación personalizada o incluso a varios tipos de publicación diferentes pasándole una variedad de tipos de publicación.

Ahora que hemos registrado con éxito nuestra taxonomía personalizada, notará que ahora tenemos una caja de meta de "Actores" que se encuentra en la columna de la derecha de la página de edición de publicaciones de WordPress. En esta etapa, agregar términos en este meta box los guardará en la base de datos pero no los mostrará en la parte delantera de su tema. Implementemos el ejemplo presentado anteriormente con las tres listas de taxonomía, ubicadas en la parte inferior de la publicación..

Para este ejemplo, deberá duplicar el código utilizado para registrar la taxonomía de los actores dos veces y cambiar el nombre de las etiquetas para reflejar nuestras taxonomías, géneros y escritores adicionales. Esto es lo que mi funciones.php archivo se ve como hasta ahora.

 $ labels = array ('name' => __ ('Actors', 'your-themes-text-domain'), 'singular_name' => __ ('Actor', 'your-themes-text-domain'), ' search_items '=> __ (' Search Actors ',' your-themes-text-domain '),' popular_items '=> __ (' Popular Actors ',' your-themes-text-domain '),' all_items '=> __ ('Todos los actores', 'your-themes-text-domain'), 'parent_item' => __ ('Parent Actor', 'your-themes-text-domain'), 'edit_item' => __ ('Edit Actor ',' your-themes-text-domain '),' update_item '=> __ (' Update Actor ',' your-themes-text-domain '),' add_new_item '=> __ (' Add New Actor ', 'your-themes-text-domain'), 'new_item_name' => __ ('New Actor', 'your-themes-text-domain'), 'separate_items_with_commas' => __ ('Separate Actors con comas', 'your -themes-text-domain '),' add_or_remove_items '=> __ (' Add or remove Actors ',' your-themes-text-domain '),' Choose_from_most_used '=> __ (' Choose from most Actors '', ' tus-temas-texto-dominio ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('actores', 'post', $ args); $ labels = array ('name' => __ ('Genres', 'your-themes-text-domain'), 'singular_name' => __ ('Genre', 'your-themes-text-domain'), ' search_items '=> __ (' Buscar Géneros ',' your-themes-text-domain '),' popular_items '=> __ (' Popular Genres ',' your-themes-text-domain '),' all_items '=> __ ('Todos los géneros', 'your-themes-text-domain'), 'parent_item' => __ ('Genre Parent', 'your-themes-text-domain'), 'edit_item' => __ ('Edit Genre ',' your-themes-text-domain '),' update_item '=> __ (' Update Genre ',' your-themes-text-domain '),' add_new_item '=> __ (' Add New Genre ', 'your-themes-text-domain'), 'new_item_name' => __ ('New Genre', 'your-themes-text-domain'), 'separate_items_with_commas' => __ ('Separate Genres with commas', 'your -themes-text-domain '),' add_or_remove_items '=> __ (' Add or remove Genres ',' your-themes-text-domain '),' Choose_from_most_used '=> __ (' Choose from most Genres ',' tus-temas-texto-dominio ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('genres', 'post', $ args); $ labels = array ('name' => __ ('Writers', 'your-themes-text-domain'), 'singular_name' => __ ('Writer', 'your-themes-text-domain'), ' search_items '=> __ (' Search Writers ',' your-themes-text-domain '),' popular_items '=> __ (' Popular Writers ',' your-themes-text-domain '),' all_items '=> __ ('Todos los escritores', 'tu-temas-texto-dominio'), 'parent_item' => __ ('Padre-escritor', 'Tu-temas-texto-dominio'), 'edit_item' => __ ('Editar Writer ',' your-themes-text-domain '),' update_item '=> __ (' Update Writer ',' your-themes-text-domain '),' add_new_item '=> __ (' Add New Writer ', 'your-themes-text-domain'), 'new_item_name' => __ ('New Writer', 'your-themes-text-domain'), 'separate_items_with_commas' => __ ('Separate Writers con comas', 'your -themes-text-domain '),' add_or_remove_items '=> __ (' Add or remove Writers ',' your-themes-text-domain '),' Choose_from_most_used '=> __ (' Choose from mosters utiliza ',' tus-temas-texto-dominio ')); $ args = array ('labels' => $ labels, 'public' => true, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => true, 'query_var' => true); register_taxonomy ('escritores', 'post', $ args);

Ahora que hemos registrado nuestras tres taxonomías, estamos listos para comenzar a mostrar nuestras taxonomías y términos recientemente creados dentro de nuestro tema. Solo asegúrese de editar una publicación existente para agregar algunos términos ficticios en las nuevas meta box de taxonomía.

Inserte el siguiente código en la parte inferior de su funciones.php expediente.

 función display_post_taxonomies ($ content) if (is_single ()) $ args = array ('public' => true, '_builtin' => false); $ output = 'objetos'; $ operador = 'y'; $ taxonomies = get_taxonomies ($ args, $ output, $ operator); if ($ taxonomies) $ content. = '
'; foreach ($ taxonomías como $ taxonomía) $ args = array ('orderby' => 'nombre', 'echo' => falso, 'taxonomía' => $ taxonomía-> nombre, 'title_li' => ''. __ ($ taxonomía-> etiquetas-> nombre, 'your-themes-text-domain'). '',' show_option_none '=> __ (' No '. $ taxonomy-> labels-> name,' your-themes-text-domain ')); $ contenido. = '
    '. wp_list_categories ($ args). '
'; $ contenido. = '
'; devolver $ contenido; add_filter ('the_content', 'display_post_taxonomies');

En pocas palabras, estamos filtrando el contenido de la publicación para agregar nuestra sección de taxonomía personalizada al final de la publicación. Usar un filtro en lugar de una etiqueta de plantilla significa que evitamos editar archivos de plantilla específicos. Esto no solo es más fácil, sino que también nos permite utilizar este código en varios temas de una manera más flexible..

También notará que esta función es extremadamente genérica; No nos referimos en absoluto a las taxonomías que creamos anteriormente. El código de arriba solo toma taxonomías personalizadas, llamando al get_taxonomies función con el índice de matriz args "incorporado"establecido en falso garantiza que no estamos incluyendo ninguna taxonomía de WordPress empaquetada.

Luego hacemos un ciclo a través de nuestras taxonomías y comenzamos a agregar elementos HTML adicionales para propósitos de formato. Dentro de nuestro bucle también estamos haciendo uso de la wp_list_categories función. Esta función prepara una lista de términos no ordenada para una taxonomía determinada. No solo maneja la preparación de la estructura HTML, sino que también vincula automáticamente cada término individual a su respectiva página de archivo..

Ahora, si carga su publicación, notará que tiene un conjunto de tres listas desordenadas, cada una mostrando un encabezado de taxonomía con los términos asociados debajo. El problema es que no hay un estilo todavía. Agrega el siguiente código a tus temas style.css archivo para arreglarlo un poco.

 .taxonomy_container desbordamiento: oculto; bloqueo de pantalla; Limpia los dos; margen inferior: 20px;  .taxonomy_container ul margin: 0px; relleno: 0px; tipo de estilo de lista: ninguno;  .taxonomy_container> ul width: 31%; flotador izquierdo; margen derecho: 3.5%;  .taxonomy_container> ul: last-child margin-right: 0%;  .taxonomy_title padding-left: 2px; parte inferior de relleno: 2px; borde inferior: 2px sólido # 333; bloqueo de pantalla; margen inferior: 2px; font-weight: negrita;  .taxonomy_container> ul li ul li padding-left: 2px; parte inferior de relleno: 3px; borde inferior: 1px punteado #ccc; margen inferior: 3px;  .taxonomy_container> ul li ul li: last-child border-bottom: 0px; 

Conclusión

Ahí lo tienen chicos; parte uno de nuestra guía para llevar las taxonomías personalizadas de WordPress al siguiente nivel. Hoy, hemos analizado qué son las taxonomías personalizadas, en qué son buenas y cómo implementarlas eficazmente en su tema. En el siguiente artículo analizaremos la personalización de sus plantillas de taxonomía y archivos de términos..