Ordina i risultati per nome e ordine asc su Archive.php


15

Attualmente uso il seguente codice per elencare i post in Archive.php ma voglio che i risultati siano ordinati per nome in ordine crescente, ho controllato il codice ma la risposta non mi è chiara, come posso farlo funzionare?

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

Grazie in anticipo.


se stai usando una query personalizzata nel tuo archivio.php puoi per favore mostrarlo? potresti pubblicare l'archivio completo.php su pastie.org e aggiornare la tua risposta con il link?
Hameedullah Khan,

Risposte:


36

Il modo più semplice per farlo è usare un gancio (il pre_get_postsgancio) per cambiare l'ordine. Ma dovresti verificare che la query sia quella per la quale vuoi modificare l'ordine! ( is_archive()o is_post_type_archive()dovrebbe essere sufficiente.)

Ad esempio, inserisci quanto segue nelle funzioni.php del tuo 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;    
    };

Ciao, sarai in grado di mostrare come funziona l'ordinamento predefinito? Alcuni link, se possibile
Grazie

@LatheeshVMVilla WP è sviluppato come un blog, quindi l'ordinamento sensibile / predefinito è di DES_ post_date (= decrescente), quindi è il più recente post-primo. Se stai usando WP per qualcosa in cui il tempo è meno rilevante (la maggior parte dei tipi di elenchi, come la tua raccolta di record, ricette, un glossario, ...) ti consigliamo di ordinare spesso post_title ASC (= crescente, quindi alfabetico per titolo con numeri che precedono le lettere).
user3445853

Grazie. Funziona bene per la mia pagina di archivio di tassonomia.
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; ?>

1
Puoi spiegare perché questo aiuta l'OP? Per favore, aggiungi sempre una spiegazione sopra un pezzo di codice. Grazie.
Kaiser

La domanda era Ordinare i risultati per nome e ordine asc su Archive.php. Presumibilmente secondo il risponditore questo codice ordina i risultati per nome e ordine asc su Archive.php?
Jon,

0

oltre alla risposta di Stephen, se si desidera solo eseguire una query e ordinare in base al titolo, è possibile utilizzare questo nel file modello:

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

query_posts($args);

5
Direttamente dal riferimento al codice di WordPress - "Questa funzione sostituirà completamente la query principale e non è destinata all'uso da parte di plug-in o temi. Il suo approccio troppo semplicistico alla modifica della query principale può essere problematico e dovrebbe essere evitato ovunque possibile. Nella maggior parte casi, esistono opzioni migliori e più performanti per modificare la query principale, ad esempio tramite l'azione "pre_get_posts" in WP_Query. " Concludendo, @Stephen Harris ha il modo corretto di raggiungere questo obiettivo. developer.wordpress.org/reference/functions/query_posts
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.