Ordinare i risultati per nome in ordine crescente su Archive.php

23 gen 2012, 12:03:51
Visualizzazioni: 60.4K
Voti: 21

Attualmente utilizzo 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 codex ma la risposta non mi è chiara, come posso farlo funzionare?

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

Grazie in anticipo.

1
Commenti

se stai utilizzando una query personalizzata nel tuo archive.php puoi mostrarcela? magari posta l'intero archive.php su http://pastie.org e aggiorna la tua risposta con il link?

Hameedullah Khan Hameedullah Khan
23 gen 2012 12:37:35
Tutte le risposte alla domanda 3
5
54

Il modo più semplice per farlo è utilizzare un hook (l'hook pre_get_posts) per modificare l'ordinamento. Ma dovresti verificare che la query sia quella per cui vuoi effettivamente alterare l'ordine! (is_archive() o is_post_type_archive() dovrebbero essere sufficienti.)

Ad esempio, inserisci il seguente codice nel file functions.php del tuo tema...

add_action( 'pre_get_posts', 'my_change_sort_order'); 
    function my_change_sort_order($query){
        if(is_archive()):
         //Se vuoi applicarlo all'archivio di un custom post type usa: is_post_type_archive( $post_type )
           //Imposta l'ordine ASC o DESC
           $query->set( 'order', 'ASC' );
           //Imposta il campo per l'ordinamento
           $query->set( 'orderby', 'title' );
        endif;    
    };
23 gen 2012 12:32:45
Commenti

Ciao, potresti mostrare come funziona l'ordinamento predefinito? Se possibile, qualche link. Grazie.

User User
8 set 2019 00:34:36

@LatheeshVMVilla WP è sviluppato come un blog, quindi l'ordinamento logico/predefinito è per post_date DESC (=decrescente), quindi i post più recenti per primi. Se stai usando WP per qualcosa dove il tempo è meno rilevante (la maggior parte dei tipi di liste, come la tua collezione di dischi, ricette, un glossario, ...) spesso vorrai ordinare per post_title ASC (=Ascendente, quindi alfabetico per titolo con i numeri che precedono le lettere).

user3445853 user3445853
3 dic 2019 15:25:46

Grazie. Funziona bene per la mia pagina di archivio tassonomico.

Sema Hernández Sema Hernández
5 feb 2020 18:12:15

Ha funzionato perfettamente. Grazie!

Mark P Mark P
17 giu 2020 21:59:29

Ha funzionato ma ha distrutto il mio menu. Ci sono più query nella pagina archivio, per modificare solo quella necessaria, sono riuscito con if(is_post_type_archive($post_type) && $query->query["post_type"]==$post_type)

Fanky Fanky
26 ago 2021 21:10:51
2
<?php
// Aggiungiamo questo codice per mostrare tutti i post
// del Glossario in ordine alfabetico
if ( is_category('Glossary') )  {
    $args = array( 
        'posts_per_page' => -1,  // Mostra tutti i post
        'orderby'        => 'title',  // Ordina per titolo
        'order'          => 'ASC'  // Ordine ascendente (A-Z)
    );
    $glossaryposts = get_posts( $args );
}
foreach( $glossaryposts as $post ) : setup_postdata( $post );
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
20 gen 2017 23:32:50
Commenti

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

kaiser kaiser
21 gen 2017 01:12:09

La domanda era Ordinare i risultati per nome e in ordine crescente su Archive.php. Presumibilmente secondo chi ha risposto, questo codice ordinerà i risultati per nome e in ordine crescente su Archive.php?

Jon Jon
11 dic 2019 16:37:01
1

in aggiunta alla risposta di Stephen, se vuoi semplicemente interrogare e ordinare per titolo, potresti usare questo nel tuo file template:

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

query_posts($args);
23 gen 2012 13:38:34
Commenti

Direttamente dal riferimento al codice di WordPress - "Questa funzione sovrascriverà completamente la query principale e non è destinata all'uso da parte di plugin o temi. Il suo approccio eccessivamente semplificato alla modifica della query principale può essere problematico e dovrebbe essere evitato quando possibile. Nella maggior parte dei casi, esistono opzioni migliori e più performanti per modificare la query principale, come tramite l'azione 'pre_get_posts' all'interno di WP_Query."

In sintesi, @Stephen Harris ha il modo corretto per ottenere questo risultato.

https://developer.wordpress.org/reference/functions/query_posts/

Michael Michael
13 ott 2016 17:33:30