Si su sitio utiliza múltiples taxonomías para clasificar la información, puede ser útil dividir las publicaciones en un archivo de taxonomía según los términos de una segunda taxonomía..
En este tutorial, te mostraré cómo crear un archivo de taxonomía para hacer precisamente eso..
Si alguna vez ha trabajado con bases de datos multi-relacionales, sabrá que una de sus excelentes características es la forma en que puede ver los datos de acuerdo con múltiples taxonomías. Por ejemplo, si tiene una base de datos de clientes, puede ver fácilmente qué clientes lo han contratado para diferentes categorías de proyectos, y luego puede ver qué clientes de diseño web están, por ejemplo, en una ubicación determinada.
La primera vez que comencé a trabajar con WordPress me resultó frustrante que no pudieras hacer esto fácilmente, al menos no puedes hacerlo con una instalación de WordPress lista para usar con el tema predeterminado..
Sin embargo, es posible clasificar sus datos por más de una taxonomía. En este tutorial. Le mostraré cómo crear una página de taxonomía para enumerar las publicaciones en esa taxonomía, ordenadas por los términos de otra taxonomía que también se aplican a ellos..
Luego, crearé un segundo archivo de taxonomía para la segunda taxonomía, que enumera sus publicaciones en orden de los términos de la primera taxonomía (confía en mí: ¡tendrá más sentido cuando lo veas pasar!)
Para completar este tutorial necesitarás:
Para este tutorial, crearé un tema secundario de veinticuatro con dos nuevos archivos de plantilla, una hoja de estilo y un archivo de funciones. Si está trabajando con su propio tema, simplemente copie el código de mi archivo de funciones en el archivo de funciones de su tema, y agregue los archivos de plantilla con ajustes para reflejar el marcado de su tema.
Para crear mi tema, creo un archivo llamado style.css
en mi carpeta de tema vacía y rellénela con lo siguiente:
/ * Nombre del tema: WPTutsPlus Cree un archivo de taxonomía para enumerar las publicaciones según los términos de una segunda taxonomía URI de tema: http://rachelmccollin.co.uk/wptutsplus-taxonomy-archive-list-by-second-taxonomy/ Descripción: Theme to support WPTutsPlus tutorial sobre cómo crear un archivo de taxonomía personalizado. Tema infantil para el tema Veinte catorce. Autor: Rachel McCollin Autor URI: http://rachelmccollin.co.uk/ Plantilla: veinte catorce Versión: 1.0 * / @import url ("... /twentyfourteen/style.css");
Esto crea mi tema hijo.
Para este tutorial voy a utilizar el mismo. 'animales'
tipo de mensaje y 'animal_cat'
taxonomía que utilicé en mi tutorial para crear una plantilla de tipo de publicación personalizada. También agregaré una segunda taxonomía llamada 'habitat'
.
Para ello, creo un nuevo archivo llamado funciones.php
. Primero, agrego la función para registrar mi tipo de publicación:
__ ('Animales'), 'singular_name' => __ ('animal'), 'add_new' => __ ('Nuevo animal'), 'add_new_item' => __ ('Agregar nuevo animal'), 'edit_item' = > __ ('Editar animal'), 'new_item' => __ ('Nuevo animal'), 'view_item' => __ ('Ver animal'), 'search_items' => __ ('Buscar animales'), 'not_found '=> __ (' No se encontraron animales '),' not_found_in_trash '=> __ (' No se encontraron animales en la Papelera '),); $ args = array ('labels' => $ labels, 'has_archive' => true, 'public' => true, 'hierarchical' => false, 'support' => array ('title', 'editor', ' extracto ',' campos personalizados ',' miniatura ',' atributos de página '),' taxonomías '=> array (' post_tag ',' categoría '),); register_post_type ('animal', $ args); add_action ('init', 'wptp_create_post_type'); ?>
Y luego registro mis dos taxonomías dentro de una función:
array ('name' => 'Animal Families', 'singular_name' => 'Animal Family', 'search_items' => 'Search Animal Families', 'all_items' => 'All Animal Families', 'edit_item' => ' Editar familias de animales ',' update_item '=>' Actualizar familia de animales ',' add_new_item '=>' Agregar nueva familia de animales ',' new_item_name '=>' Nuevo nombre de familia de animales ',' menu_name '=>' Animal Family ', ), 'hierarchical' => true, 'sort' => true, 'args' => array ('orderby' => 'term_order'), 'rewrite' => array ('slug' => 'animal-family' ), 'show_admin_column' => true)); // registrar una taxonomía llamada 'Habitat' register_taxonomy ('habitat', 'animal', array ('labels' => array ('name' => 'Habitats', 'singular_name' => 'Habitat', 'search_items' = > 'Search Habitats', 'all_items' => 'All Habitats', 'edit_item' => 'Edit Habitat', 'update_item' => 'Update Habitat', 'add_new_item' => 'Add New Habitat', 'new_item_name' => 'Nuevo nombre de hábitat', 'nombre de menú' => 'Habitat',), 'jerárquico' => verdadero, 'sort' => verdadero, 'args' => array ('orderby' => 'term_order'), 'show_admin_column' => true)); add_action ('init', 'wptp_register_taxonomies'); ?>
Esto crea el 'animal'
Tipo de puesto y las dos taxonomías que se le aplican. Tenga en cuenta que he usado 'show_admin_column'
Para hacer la vida un poco más fácil al administrar mis mensajes..
Después de agregar algunos datos y clasificar los animales según mis taxonomías, ahora puedo ver mis datos en el panel de WordPress, como se muestra a continuación.
Nota: Mi clasificación de los animales que he usado no es muy científica. No haga comentarios sobre mi comprensión de los hábitats o las familias.!
El siguiente paso es crear un archivo de plantilla para el 'animal_cat'
Archivo de taxonomia. Crea un archivo en tu carpeta de temas y llámalo taxonomía-animal_cat.php
. Ahora agregue el código del envoltorio desde su tema (lo he copiado de mi tema principal, el suyo será diferente si está usando su propio tema):
Este archivo de plantilla ahora necesita tener algunos datos agregados.
Identificando el Término Consultado Actual
La plantilla de archivo utilizará
WP_Query
para crear una consulta personalizada para cada término. Uno de los objetos consultados será el término de taxonomía actual que se muestra, por lo que necesita identificarlo y almacenarlo como una variable.Bajo la
get_header ()
línea, añadir:Puedes usar eso
$ animalcat
variable más adelante.Salida de un encabezado de página
Actualmente, el archivo no tiene un encabezado principal, por lo que debe agregar uno usando la variable que acaba de definir.
Despues de la apertura
etiqueta, agregue lo siguiente:nombre; ?>
Obteniendo términos para la segunda taxonomía
A continuación, debe buscar la lista de términos para la segunda taxonomía. Debajo del código que acaba de agregar, inserte esto:
0)); ?>Esto buscará una lista de todos los términos y la almacenará en una matriz. Mediante el uso
'hide_empty'
puede evitar que se muestren términos vacíos, pero como verá en breve, esto solo evita que se consulten términos que no tienen ninguna publicación, no aquellos que no tienen publicaciones con el término de taxonomía consultado actualmente.Creando el Loop
Ahora crea un bucle que se ejecutará para cada uno de los términos:
'animal', 'animal_cat' => $ animalcat-> slug, 'habitat' => $ term-> slug); $ consulta = nueva WP_Query ($ args); // mostrar el término nombre en una etiqueta de encabezado echo ''. $ término-> nombre. hábitat
'; // mostrar los títulos de los posts en una lista echo ''; // Iniciar el bucle while ($ consulta-> have_posts ()): $ consulta-> the_post (); ?>
- ">
'; // usa reset postdata para restaurar la consulta original wp_reset_postdata (); ?>Algunas notas sobre esto:
- Para cada término, se define una nueva consulta..
- Los argumentos para la consulta incluyen el término en la segunda taxonomía (
término $
) y el término actualmente en consulta ($ animalcat
).- Si sus taxonomías solo se aplican a un tipo de publicación, podría omitir el
'tipo de mensaje'
argumento pero prefiero incluirlo por si acaso.- los
término $
La variable se usa para generar un título para cada sección usando$ término-> nombre
.Ahora guarde su archivo de plantilla y eche un vistazo al archivo de taxonomía de uno de sus Familia animal condiciones:
Agregar un cheque para publicaciones en cada consulta
En este momento, como puede ver, la plantilla está generando listas vacías. Esto se arregla fácilmente comprobando si cada consulta tiene publicaciones.
Envuelve lo siguiente alrededor de tu bucle:
if ($ consulta-> have_posts ())Tu bucle ahora se verá así:
if ($ query-> have_posts ()) // muestra el nombre del término en una etiqueta de encabezado echo ''. $ término-> nombre. hábitat
'; // mostrar los títulos de los posts en una lista echo ''; // Iniciar el bucle while ($ consulta-> have_posts ()): $ consulta-> the_post (); ?>
- ">
';Esto evita que WordPress ejecute el bucle si la consulta no tiene ninguna publicación, eliminando esos encabezados vacíos. Ahora mi página de archivo se ve así:
Mucho mejor!
Creando el Archivo de Plantilla para la Segunda Taxonomía
El último paso es crear un archivo de plantilla para los archivos de la segunda taxonomía..
Copia tu primer archivo de plantilla y renómbrelo
taxonomía-habitat.php
. Edítalo para que la terminología sea correcta. Las ediciones que necesito hacer en mi archivo son:
- ajustar los comentarios en la parte superior del archivo para que sean precisos
- cambiando el nombre del
$ animalcat
variable a$ habitat
(Podría evitar este problema al darle a la variable un nombre más genérico, pero no lo llametérmino $
como lo estas usando en otro lado)- editando el
partida por lo que utiliza el
$ habitat
variable para mostrar el nombre del término consultado actual (también he agregado texto explicativo aquí, que es opcional)- cambiando el primer parámetro de la
get_terms ()
función por lo que utiliza laanimal_cat
término, no elhabitat
término.- editando los argumentos de consulta, esencialmente intercambiando los valores por
'animal_cat'
y'habitat'
.- editando el
Contenidos en el bucle para referirse a familias no a hábitats..
Esto significa que mi nuevo archivo de plantilla se ve así:
Habitat - nombre; ?>
0)); ?> 'animal', 'animal_cat' => $ term-> slug, 'habitat' => $ habitat-> slug); $ consulta = nueva WP_Query ($ args); if ($ query-> have_posts ()) // muestra el nombre del término en una etiqueta de encabezado echo ''. $ término-> nombre. ' familia
'; // mostrar los títulos de los posts en una lista echo ''; // Iniciar el bucle while ($ consulta-> have_posts ()): $ consulta-> the_post (); ?>
- ">
'; // use reset postdata para restaurar la consulta original wp_reset_postdata (); ?>Después de realizar esos cambios, guarde su nuevo archivo de plantilla y marque uno de sus archivos:
Ahora tiene una página para la segunda taxonomía que funciona de la misma manera que la primera taxonomía..
Resumen
En este tutorial, ha aprendido una forma de mostrar datos usando múltiples taxonomías. Puede llevar esto más lejos trabajando con una tercera taxonomía, de una de las dos maneras siguientes:
- Repita el proceso de obtención de términos, definiendo una consulta y ejecutando el bucle para el tercer término después del segundo término, de modo que tenga dos listas separadas.
- Combine sus datos usando los tres términos, usando cada uno
término $
variable de forma similar a la$ habitat
o$ animalcat
variable y añadiendo un extrapara cada()
declaración dentro de su existentepara cada()
declaración. A continuación, deberá pensar cómo distribuir los datos resultantes utilizando listas o una cuadrícula..¿Por qué no intentarlo??