Classifique os resultados por nome e ordem crescente no Archive.php

15

Atualmente, uso o código a seguir para listar as postagens no Archive.php, mas quero que os resultados sejam ordenados por nome em ordem crescente, verifiquei o codex, mas a resposta não está clara para mim, como posso fazer isso funcionar?

<?php $post = $posts[0]; // ?>

Desde já, obrigado.

Dave Burns
fonte
Se você estiver usando uma consulta personalizada em seu archive.php, você pode mostrá-la? pode postar o archive.php completo em pastie.org e atualizar sua resposta com o link?
Hameedullah Khan

Respostas:

36

A maneira mais fácil de fazer isso é usar um gancho (o pre_get_postsgancho) para alterar a ordem. Mas você deve verificar se a consulta é para a qual você deseja alterar a ordem! ( is_archive()ou is_post_type_archive()deve ser suficiente.)

Por exemplo, coloque o seguinte em functions.php do seu tema ...

add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //If you wanted it for the archive of a custom post type use: is_post_type_archive( $post_type )
           //Set the order ASC or DESC
           $query->set( 'order', 'ASC' );
           //Set the orderby
           $query->set( 'orderby', 'title' );
        endif;    
    };
Stephen Harris
fonte
Olá, você será capaz de mostrar como funciona o pedido padrão? Alguns links, se possível. Obrigado
Latheesh VM Villa
O @LatheeshVMVilla WP é desenvolvido como um blog, portanto, a ordem sensata / padrão é por post_date DESC (= decrescente), de modo que é o mais recente pós-primeiro. Se você estiver usando o WP para algo em que o tempo é menos relevante (a maioria dos tipos de listas, como sua coleção de registros, receitas, um glossário, ...), convém solicitar com frequência o post_title ASC (= Crescente, portanto alfabético por título com números anteriores às letras).
user3445853
Obrigado. Funciona bem para minha página de arquivo de taxonomia.
Sema Hernández
1
<?php
// we add this, to show all posts in our
// Glossary sorted alphabetically
if ( is_category('Glossary') )  {
    $args = array( 
        'posts_per_page' => -1, 
        'orderby'        => 'title', 
        'order'          => 'ASC' 
    );
    $glossaryposts = get_posts( $args );
}
foreach( $glossaryposts as $post ) : setup_postdata( $post );
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
Abdelfattah Saied Baraka
fonte
1
Você pode explicar por que isso ajuda o OP? Por favor, sempre adicione uma explicação sobre um pedaço de código. Obrigado.
kaiser
A pergunta foi Classificar resultados por nome e ordem crescente no Archive.php. Presumivelmente, de acordo com o respondente, esse código classificará os resultados por nome e ordem crescente no Archive.php?
11119 Jon
0

Além da resposta de Stephen, se você quiser apenas consultar e ordenar pelo título, use-o no seu arquivo de modelo:

$args = ( array(
'order' => 'ASC',
'orderby' => 'title',
 ) );

query_posts($args);
Josh
fonte
5
Diretamente da referência de código do WordPress - "Esta função substituirá completamente a consulta principal e não deve ser usada por plugins ou temas. Sua abordagem simplista demais para modificar a consulta principal pode ser problemática e deve ser evitada sempre que possível. casos, existem opções melhores e com melhor desempenho para modificar a consulta principal, como por meio da ação 'pre_get_posts' no WP_Query. " Conclusão @ Stephen Harris tem a maneira correta de fazer isso. developer.wordpress.org/reference/functions/query_posts
Michael #: