Não, não é possível ordenar por taxonomia, porque, de um certo ponto de vista, isso não faz muito sentido.
Taxonomias são maneiras de agrupar as coisas. Portanto, o objetivo de ter uma taxonomia nas postagens seria realmente ter termos nessa taxonomia compartilhados entre as postagens. Se uma taxonomia tivesse termos que eram usados apenas em um post cada, isso tornaria a taxonomia meio inútil. E se os termos fossem compartilhados como deveriam, então ordenar por ele não produziria nada de particularmente útil.
O que você deve usar em tal situação é a meta meta. Você pode encomendar por meta meta, e é exclusivo para cada postagem.
Edit: Dito isto, você pode solicitar por taxonomia, fazendo uma consulta SQL personalizada usando um filtro, você simplesmente não pode fazê-lo a partir de um WP_Query não modificado: http://scribu.net/wordpress/sortable-taxonomy-columns.html
No entanto, se você precisar recorrer a esse tipo de coisa, sua estrutura de design de dados estará errada em primeiro lugar. "Termos" na taxonomia não são "dados" reais. Os termos em si não têm significado inerente, são apenas rótulos para o agrupamento específico que estão descrevendo. Se você os estiver tratando como dados significativos, você tem uma falha de design subjacente.
As taxonomias agrupam as coisas atribuindo termos a elas. Esse agrupamento é o ponto principal das taxonomias, os termos são apenas rostos bonitos no agrupamento. Se você possui metadados significativos para atribuir a uma postagem, deve usar a meta da postagem para ela. E você pode pedir, porque o post meta usa chaves e valores para armazenar informações. Com uma taxonomia, você realmente está apenas armazenando chaves, com seus valores sendo as postagens agrupadas por esse termo.
As coisas ficam mais fáceis a longo prazo se você usar a abordagem correta para isso. Enquanto eu não estou dizendo que você não pode fazer algo estranho com a taxonomia, você está apenas tornando as coisas mais difíceis para si mesmo a longo prazo, usando errado.
A resposta aceita para esta pergunta é inaceitável. É ilógico supor que ordenar por impostos "não faz sentido". A resposta que ele deu não faz sentido.
Considere ter um tipo de postagem no menu. Então você tem um imposto personalizado de "FoodCategories". O imposto FoodCategories tem os termos "Café da manhã", "Almoço" e "Jantar". Se você enviar uma consulta utilizando o parâmetro tax_query, agora terá um conjunto de resultados com todos os termos, mas eles serão ordenados por data de postagem.
Para obter a ordem correta deles, em relação aos termos deles, e depois exibir adequadamente no front-end, separando as postagens em suas várias categorias, você deve percorrer o conjunto de resultados e consultar cada postagem individual dentro do conjunto de resultados para encontrar seus termos e comparar com o termo atual, filtrar em uma matriz e continuar por toda parte. Em seguida, é necessário percorrer novamente a nova matriz para exibição. Isso não é produtivo.
Seria bom se o WP tivesse uma opção de pedido "tax__in" por uma opção "post__in", mas como não tem, você deve executar o processo ridículo acima; personalize você mesmo a consulta por meio dos filtros 'posts_orderby' e 'posts_join' para ajustar o método orderby e adicionar o termo ao conjunto de resultados, respectivamente; ou você deve fazer uma nova consulta para cada termo que você está filtrando nas seções html relativas a esses termos.
O mais eficiente seria alterar a string de consulta por meio de filtros. O mais fácil seria fazer três consultas separadas. A API do WP deve lidar com pedidos por impostos ou qualquer parâmetro de consulta restritivo. Se você estiver restringindo uma consulta com base em determinadas condições, há uma alta probabilidade de que muitos precisem solicitar pelas mesmas condições.
fonte
Sim, mas é bastante envolvido ...
Adicione a functions.php no seu tema:
Isso é frankenstein de algumas coisas encontradas e algumas coisas que eu mesmo fiz. Explicar é bastante difícil, mas o resultado final é com essa execução; você pode colocar? Orderby = (consulta de taxonomia var) & order = ASC (ou DESC) e ela decolará!
fonte
add_filter('posts_clauses', 'orderby_tax_clauses', 10, 2 );
paraadd_filter('posts_clauses', 'todo_tax_clauses', 10, 2 );
Obrigado :)Estou chegando atrasado para o jogo aqui, mas há uma maneira mais simples e mais simples de fazer isso.
Crie sua consulta fiscal normalmente.
Configure seus argumentos para query_posts ou WP_Query
Antes de fazer sua chamada query_posts / WP_Query, conecte-se ao filtro orderby e substitua-o
não esqueça de remover o filtro depois ...
isso funciona porque o tax_query cria as junções etc para você, basta solicitar por um dos campos da junção.
fonte
Bem, gostaria de expor minha experiência na classificação de tipos de postagem personalizados por categoria / taxonomia.
A TEIA
O CASO
Nas páginas da lista de categorias de arquivo, o cliente queria que as postagens fossem classificadas por
OS PASSOS
Primeiro , eu pego a solicitação da consulta da página de arquivamento não modificada, que era assim:
Segundo , editei o código sql no Sequel Pro no banco de dados para atender às minhas necessidades. Eu venho com isso (sim, provavelmente pode ser melhorado: meu conhecimento sobre MySQL não é excelente):
Terceiro , vinculei a consulta no arquivo functions.php com três filtros: posts_fields, posts_join e posts_orderby
O código em functions.php:
Finalmente, ativei os filtros do gancho pre_get_post de acordo com algumas condições
Espero que isso possa ajudar alguém
fonte
Eu tive um problema muito semelhante ao que lidei: quero solicitar um arquivo pós-tipo personalizado (artigos de revista) por uma taxonomia personalizada (questões). Eu nunca faço consultas SQL diretas no meu site - e geralmente se você gosta dessas outras respostas - precisa repensar sua abordagem.
PROBLEMAS:
1) O Wordpress não permite que você encomende taxonomias de forma inteligente.
2) O Wordpress simplesmente não permite o
orderby
uso de taxonomias no WP_Query pós-tipo (como explicado por Otto).SOLUÇÕES:
1) A classificação das taxonomias é melhor realizada no momento pelo plug-in Custom Taxonomy Order NE . Ele permite que você solicite a taxonomia via WYSIWYG na
wp-admin
qual não é como eu faria isso, mas não encontrei nada melhor.Quando você configura o plug-in, obtém algo semelhante ao que eu fiz aqui. Anote a opção
Auto-sort Queries of this Taxonomy
- defina-a comoCustom Order as Defined Above
; isso faz com que você solicite o que precisa. Captura de tela:2) Com uma taxonomia classificada, agora você pode criar uma série de chamadas WP_Query que são executadas em cada termo, criando efetivamente um arquivo ordenado pela taxonomia. Use
get_terms()
para criar uma matriz de todos os termos fiscais e, em seguida, execute umforeach
sobre cada termo. Isso cria umWP_Query
item para cada termo que retornará todas as postagens para um determinado termo, criando efetivamente um arquivo ordenado por termo de taxonomia. Código para fazer isso acontecer:Leitura relacionada neste site: Exiba todas as postagens em um tipo de postagem personalizada, agrupadas por uma taxonomia personalizada
fonte
Não sei por que todas as soluções aqui estão exagerando. OK, faz meia década, mas atualmente estou executando o seguinte código e funciona:
Isso classificará as taxonomias do seu CPT primeiro por sua taxonomia em ordem alfabética e dentro desses grupos de taxonomia também por ordem alfabética.
fonte
Aqui está a solução que eu usei para esse problema específico. Essa solução é para casos extremos em que não é possível usar um
pre_get_posts
filtro e existe paginação existente na consulta (ou seja: WooCommerce):Usei isso para criar um menu de navegação ordenado por taxonomia, termo e contagem de postagens por termo.
Se você deseja apenas as postagens, altere a consulta para
SELECT p.*
eGROUP BY p.ID
fonte
É como uma consulta antes da consulta, mas não incomodará se não estivermos consultando muitas postagens ... A idéia é modificar a consulta principal para que nem precisemos ir aos modelos e gerar novas consultas e rotações...
fonte