Classificar resultados por nome e ordem asc em Archive.php

9

Eu atualmente uso o seguinte código para listar posts em Archive.php, mas eu quero que os resultados sejam ordenados por nome em ordem crescente, eu verifiquei o códice, mas a resposta não está clara para mim, como eu posso conseguir isso? trabalhando?

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

Obrigado antecipadamente.

    
por Dave Burns 23.01.2012 / 11:03

3 respostas

26

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

Por exemplo, coloque o seguinte no 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;    
    };
    
por Stephen Harris 23.01.2012 / 11:32
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; ?>
    
por Abdelfattah Saied Baraka 20.01.2017 / 22:32
0

Além da resposta de Stephen, se você quiser apenas consultar e ordenar pelo título, você pode usar isso em seu arquivo de modelo:

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

query_posts($args);
    
por josh 23.01.2012 / 12:38

Tags