pre_get_posts

Mais sobre pre_get_posts no Codex...

Modificar a ordem dos posts

Funções: pre_get_posts

Este é um filtro de permite modificar a ordem como posts são listados, é possível definir ainda ordenações diferentes de acordo com o contexto com um filtro usando pre_get_posts.

Neste exemplo, o filtro está modificando a ordem para que posts na categoria “Lugares” sejam listados por ordem alfabética:

function sort_categories_by_title($x) {
    if (is_category('lugares')) { //o nome da categoria
        $x->query_vars['orderby'] = 'title';
        $x->query_vars['order'] = 'ASC';
    }
}
 
add_action('pre_get_posts', 'sort_categories_by_title');

Além de categoria, é possível usar outros contextos como is_archive (página de arquivo), is_tag página de tags etc. Em query_vars você pode definir outros parâmetros para modificar a listagem, por exemplo remover certos posts da listagem, adicionar categorias filhas etc.