Avançar para conteúdo

Tudo para WordPress

Plugins, Temas, dicas de WordPress e muito mais para você que busca informação sobre este excelente CMS!

  • Twitter
  • Facebook
  • Google+
  • RSS
Entenda com funciona Assine nosso RSS

Um mais poderoso ORDER BY no WordPress 4.0

Publicado em 04/09/2014 às 13h03 por Guga Alves

orderby é o argumento passado para a WP_Query para dizer por qual coluna deve ser a ordenação quando ele está criando a cláusula ORDER BY para o seu SQL gerado. O valor padrão para orderby é post_date.
A ordem de classificação padrão para uma coluna em MySQL é ASC (ascendente), com os valores menores em primeiro lugar. Para o inverso, DESC é usado. Você pode ordenar por múltiplas colunas e cada coluna pode ter sua própria ordem de classificação.

O valor padrão para o argumento de ordem dentro WP_Query é DESC. ~ 23% da internet consulta automaticamente as mensagens em ordem cronológica inversa por causa disso. Ordem só pode ser um dos dois valores: DESC ou ASC.

O orderby aceita uma string, o que representa uma coluna na qual classificar:

Ambos irão produzir uma cláusula ORDER BY assim:

O orderby também irá analisar um conjunto delimitado por espaço de colunas:

Antes de 4.0, havia um problema: o valor de ordem só seria aplicado para o último valor que você passou nessa lista delimitada por espaço, produzindo uma cláusula ORDER BY como:

Lembre-se que a ordem de classificação padrão para uma coluna em MySQL é ASC, então consultas assim podem ficar estranhas e produzir resultados inesperados/imprevisíveis. Se nenhum valor é passado para a ordem para uma coluna no SQL gerado, a coluna será classificada em ordem ASC. Isso não era tão claro para todos os desenvolvedores. (veja no trac #26042)

No WordPress 4.0, quando você passar um conjunto delimitado por espaço de valores, seu valor único para a ordenação será aplicada a todos os seus valores que são analisados ​​para orderby. Isso foi corrigido no trac #28541.

Então, isso é muito bom, mas ele não permite que você tenha controle sobre a ordem de classificação para cada coluna. A sintaxe não se deixa muito espaço para a extensão. Ai vejo o item #29027 no trac.

Depois deste conjunto de melhorias, no WordPress 4.0 agora você pode passar um array para WP_Query como o valor para orderby. A sintaxe agora é assim:

E isto lhe permite controlar a geração da cláusula ORDER BY com mais especificidade:

Antes do WordPress 4.0, você teria que usar alguns filtros na instrução SQL ou uma cláusula específica. O que não era muito bom.

Para ver as partes internas, confira os novos métodos protegidos no WP_Query: ->parse_order() e ->parse_orderby.

1 pessoa comentou o artigo

Participe e deixe o seu comentário!

Procurando Temas?

Acesse o arquivo de Temas WordPress