quinta-feira, 4 de setembro de 2014

Um mais poderoso ORDER BY no WordPress 4.0 [Tudo para Wordpress]

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:



$q = new WP_Query( array( 'orderby' => 'post_title' ) );

// or an alias
$q = new WP_Query( array( 'orderby' => 'title' ) );

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



ORDER BY post_title DESC

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



$q = new WP_Query( array( 'orderby' => 'title author' ) );

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:



ORDER BY post_title, post_author DESC

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:



$q = new WP_Query( array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ) );

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



ORDER BY post_title DESC, menu_order ASC

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.



Um mais poderoso ORDER BY no WordPress 4.0

Post originalmente publicado no Tudo Para WordPress por Guga Alves


Um mais poderoso ORDER BY no WordPress 4.0

Post originalmente publicado no Tudo Para WordPress por Guga Alves


Nenhum comentário: