Um mais poderoso ORDER BY no WordPress 4.0

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.

Posts Similares

  • IA como fundamento do WordPress: a visão do Core para o futuro da plataforma
    |

    IA como fundamento do WordPress: a visão do Core para o futuro da plataforma

    Se você acompanha o ecossistema WordPress há algum tempo, sabe que a introdução de novas tecnologias no Core (o núcleo do sistema) geralmente acontece em ondas. Tivemos a era dos Custom Post Types, a revolução da REST API e, mais recentemente, a mudança de paradigma com o editor de blocos (Gutenberg). Agora, em dezembro de…

  • WordPress.org lança logotipos, botões e wallpapers

    A comunidade WordPress.org lançou oficialmente no seu website, diversas ofertas relativas ao web branding da empresa, nomeadamente logotipos vetoriais, botões, wallpapers e os códigos de cor oficiais do branding WordPress. Esta iniciativa tem como objetivo ajudar a melhorar o impacto da marca e a sua presença pela web através da utilização correta dos elementos visuais…

  • WordPress 2.8.6 – Atualização de segurança

    A Atualização para a versão 2.8.6 corrige 2 problemas de segurança que podem ser explorados por usuários registrados e logados que possuam privilégios (permissão) para postagem. Se você tem autores que não sejam totalmente confiáveis em seu site, a atualização para o 2.8.6 é recomendável. O primeiro problema é uma vulnerabilidade XSS no ‘Press This’…

  • WordPress 3.3 Beta 3

    Eis que Beta 3 do WordPress 3.3 é disponibilizado! Você sabe o que fazer: use uma instalação de teste, veja o que pode estar com bugs e relate quaisquer bugs que você encontrar. Foram mais de 200 correções desde a versão Beta 2, e neste momento já estamos em Feature Freeze – não adicionando novos…

  • WordPress 3.4 Release Candidate 2

    O segundo Release Candidate do WordPress 3.4 está agora disponível. Desde o RC1, foram feitas algumas mudanças. O objetivo da equipe de desenvolvimento é liberar a fersão vinal do WordPress 3.4 no início da próxima semana, assim autores de plugins e temas terão sua última chance de testar seus projetos para encontrar quaisquer problemas de…

  • Do Photoshop para o WordPress: Convertendo Layout PSD em tema WordPress

    O plugin para Photoshop Divine promete converter automaticamente layouts do Photoshop diretamente em tema para WordPress. Pelo o que pude ver nos tutoriais e documentação, o processo não é todo automático, você deve informar que elementos do seu layout correspondem aos elementos do WordPress, como “título do post”, “data”, “autor”, etc. Também deverá informar quais…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

1 Comentário