No, no es posible ordenar por taxonomía, porque desde cierto punto de vista, eso no tiene mucho sentido.
Las taxonomías son formas de agrupar cosas. Entonces, el punto de tener una taxonomía en las publicaciones sería tener términos en esa taxonomía que se compartan entre las publicaciones. Si una taxonomía tuviera términos que solo se usaran en una publicación cada uno, entonces la taxonomía sería algo inútil. Y si los términos se compartieran como deberían ser, ordenarlos no produciría nada particularmente útil.
Lo que deberías estar usando en tal situación es el post meta. Puede ordenar por meta meta, y es único para cada publicación.
Editar: Dicho esto, puede ordenar por taxonomía haciendo una consulta SQL personalizada utilizando un filtro, simplemente no puede hacerlo desde una WP_Query no modificada: http://scribu.net/wordpress/sortable-taxonomy-columns.html
Sin embargo, si tiene que recurrir a hacer este tipo de cosas, entonces su estructura de diseño de datos es incorrecta en primer lugar. Los "términos" en la taxonomía no son "datos" reales. Los términos en sí no tienen un significado inherente, son solo etiquetas para la agrupación particular que están describiendo. Si los trata como datos significativos, entonces tiene un defecto de diseño subyacente.
Las taxonomías agrupan cosas asignándoles términos. Esa agrupación es el objetivo de las taxonomías, los términos son solo caras bonitas en la agrupación. Si tiene metadatos significativos para asignar a una publicación, entonces debería usar el meta de la publicación para ello. Y que puede ordenar por, porque la meta meta utiliza claves y valores para almacenar información. Con una taxonomía, en realidad solo está almacenando claves, y sus valores son las publicaciones agrupadas por ese término.
Las cosas son más fáciles a largo plazo si usas el enfoque correcto para ello. Si bien no digo que no puedas hacer algo extraño con la taxonomía, a la larga solo te estás haciendo las cosas más difíciles al usarla incorrectamente.
La respuesta aceptada para esta pregunta es inaceptable. Es ilógico suponer que ordenar por impuestos "no tiene sentido". La respuesta que dio no tiene sentido.
Considere tener un tipo de publicación de menú. Entonces tiene un impuesto personalizado de "FoodCategories". El impuesto FoodCategories tiene los términos "Desayuno", "Almuerzo" y "Cena". Si envía una consulta utilizando el parámetro tax_query, ahora tiene un conjunto de resultados con todos los términos, sin embargo, están ordenados por fecha de publicación.
Para obtener el orden correcto de estos, en relación con sus términos, y luego mostrarlos en el front-end apropiadamente separando las publicaciones en sus diversas categorías, debe recorrer el conjunto de resultados, luego consultar cada publicación individual dentro del conjunto de resultados para encontrar sus términos y compararlos con el término actual, filtrar en una matriz y continuar durante todo el proceso. Luego debe volver a recorrer la nueva matriz para mostrarla. Esto no es productivo.
Sería bueno que WP tuviera una opción de pedido "tax__in", ya que tiene una opción "post__in", pero como no la tiene, debe realizar el ridículo proceso anterior; personalice la consulta usted mismo mediante el filtro 'posts_orderby' y el filtro 'posts_join' para ajustar el método orderby y agregar el término al conjunto de resultados, respectivamente; o tiene que hacer una nueva consulta para cada término que está filtrando dentro de las secciones html relativas a esos términos.
Lo más eficiente sería cambiar la cadena de consulta por medio de filtros. Lo más fácil sería hacer tres consultas separadas. La API de WP debe manejar los pedidos por impuestos o cualquier parámetro de consulta restrictivo. Si está restringiendo una consulta basada en ciertas condiciones, existe una alta probabilidad de que muchos tengan que ordenar por esas mismas condiciones.
fuente
Sí, pero está bastante involucrado ...
Agregue a functions.php en su tema:
Esto se basa en algunas cosas encontradas y algunas cosas que hice yo mismo. Explicar es bastante difícil, pero la conclusión es que con esto en ejecución, puede poner? Orderby = (taxonomy query var) & order = ASC (o DESC) y ella comenzará de inmediato.
fuente
add_filter('posts_clauses', 'orderby_tax_clauses', 10, 2 );
aadd_filter('posts_clauses', 'todo_tax_clauses', 10, 2 );
Gracias :)Llego tarde al juego aquí, pero hay una manera más simple de hacer esto en WordPressy.
Desarrolle su consulta de impuestos como de costumbre.
Configure sus argumentos para query_posts o WP_Query
Antes de realizar su consulta query_posts / WP_Query, conéctese al filtro de pedido y anúlelo
no olvides quitar el filtro después ...
esto funciona b / c tax_query crea las combinaciones, etc. para usted, solo necesita ordenar por uno de los campos de la combinación.
fuente
Bueno, me gustaría exponer mi experiencia en la clasificación de tipos de publicaciones personalizadas por categoría / taxonomía.
LA WEB
EL CASO
En las páginas de la lista de categorías de archivo, el cliente quería que las publicaciones se clasificaran por
LOS PASOS
Primero , capto la solicitud de la consulta de la página de archivo no modificada que resultó ser así:
En segundo lugar , edité el código sql en Sequel Pro en la base de datos para satisfacer mis necesidades. Salí con esto (sí, probablemente se pueda mejorar: mi conocimiento en MySQL no es sobresaliente):
En tercer lugar , enganché la consulta en el archivo functions.php con tres filtros: posts_fields, posts_join y posts_orderby
El código en functions.php:
Finalmente , activé los filtros del gancho pre_get_post de acuerdo con algunas condiciones
Espero que esto pueda ayudar a alguien
fuente
Tuve un problema muy similar con el que me ocupé: quiero ordenar un archivo de post-tipo personalizado (artículos de revistas) por una taxonomía personalizada (números). Nunca hago consultas directas de SQL en mi sitio, y generalmente si eres como estas otras respuestas, debes repensar tu enfoque.
PROBLEMAS:
1) Wordpress no le permite ordenar taxonomías de manera inteligente.
2) Wordpress simplemente no permite
orderby
utilizar taxonomías en post-type WP_Query (como lo explica Otto).SOLUCIONES
1) La ordenación de taxonomías se logra mejor con el complemento NE de orden de taxonomía personalizada en este momento. Le permite ordenar la taxonomía a través de WYSIWYG,
wp-admin
que no es como lo haría, pero no he encontrado nada mejor.Cuando configure el complemento, obtendrá algo similar a lo que he hecho aquí. Tome nota de la opción
Auto-sort Queries of this Taxonomy
: establezca esto enCustom Order as Defined Above
; esto le da el pedido que necesita. Captura de pantalla:2) Con una taxonomía ordenada en su lugar, ahora puede crear una serie de llamadas WP_Query que se ejecutan a través de cada término, creando efectivamente un archivo ordenado por la taxonomía. Utilícelo
get_terms()
para crear una matriz de todos los términos fiscales, luego ejecute unforeach
sobre cada término. Esto crea un elementoWP_Query
para cada término que devolverá todas las publicaciones para un término determinado, creando efectivamente un archivo ordenado por término de taxonomía. Código para que esto suceda:Lectura relacionada en este sitio: muestra todas las publicaciones en un tipo de publicación personalizada, agrupadas por una taxonomía personalizada
fuente
No estoy seguro de por qué todas las soluciones aquí son demasiado exageradas. OK, hace media década, pero actualmente estoy ejecutando el siguiente código y funciona:
Esto ordenará las taxonomías de su CPT primero por su taxonomía en orden alfabético y dentro de estos grupos de taxonomía también por orden alfabético.
fuente
Aquí está la solución que he usado para este problema en particular. Esta solución es para casos extremos en los que no es posible usar un
pre_get_posts
filtro y hay una paginación existente en la consulta (es decir: WooCommerce):Lo he usado para crear un menú de navegación ordenado por taxonomía, término y recuento de publicaciones por término.
Si simplemente desea las publicaciones, cambie la consulta a
SELECT p.*
yGROUP BY p.ID
fuente
Es como una consulta antes de la consulta, pero no molestará si no consultamos demasiadas publicaciones ... La idea es modificar la consulta principal para que ni siquiera necesitemos ir a plantillas y generar nuevas consultas y bucles ...
fuente