Visualizzare i post in ordine alfabetico nel loop

4 dic 2015, 21:33:32
Visualizzazioni: 47.1K
Voti: 8

Con questo loop sto visualizzando singoli post in una pagina di archivio. I post vengono filtrati per la categoria 'Banks'. Come posso visualizzarli in ordine alfabetico? Ho provato a usare WP_Query, ma non riesco a farlo funzionare; ogni volta rompe il mio loop.

<h3>Banche e Istituti di Credito</h3>

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); 
    if ( in_category( 'Banks' ) ) { ?>
        <li>
            <a href="<?php the_permalink() ?>">
                <img src="<?php the_field( 'biller_logo' )?>">
                <?php the_field( 'biller_name' ) ?>
            </a>
        </li>
    <?php } 
endwhile; endif; ?>
</ul>
1
Commenti

qual è la pagina di archivio? è la query principale o una secondaria?

Milo Milo
4 dic 2015 22:16:29
Tutte le risposte alla domanda 2
2
17

Per visualizzare i post in ordine alfabetico discendente aggiungi questo al tuo array args (preso dal wp codex)

'orderby' => 'title',
'order'   => 'DESC',

Per visualizzare i post in ordine alfabetico ascendente basta cambiare DESC in ASC.

Quindi l'intero codice sarebbe:

$args = array(
    'orderby' => 'title',
    'order'   => 'DESC',
);
$query = new WP_Query( $args );

Parametri di Ordinamento WP_Query

Oppure, se non vuoi modificare il loop principale, puoi usare get_posts. WP query altera il loop principale modificando le variabili della variabile globale $wp_query. get_posts, d'altro canto, semplicemente fa riferimento a un nuovo oggetto WP_Query, e quindi non influisce né altera il loop principale. Si userebbe nello stesso modo, ma cambiando $query = new WP_Query( $args ); in qualcosa come $query = get_posts( $args );.

Se desideri modificare la query principale prima che venga eseguita, puoi agganciarti ad essa usando la funzione pre_get_posts.

4 dic 2015 22:33:08
Commenti

non è chiaro dalla domanda se si tratta di una query aggiuntiva - pre_get_posts sarebbe più appropriato nel caso di una query principale, anche se i parametri da impostare sarebbero gli stessi.

Milo Milo
5 dic 2015 00:23:42

infatti, ma semplicemente get_posts sarebbe più semplice. Ho aggiornato la mia risposta aggiungendo get_posts.

thebigtine thebigtine
5 dic 2015 01:09:05
2

Non è il codice migliore che abbia mai scritto qui, ma se vuoi creare una lista come:

  • A
  • America
  • B
  • Brasile
  • Bahamas

Potresti usare..

<ul>
                            <?php 
                                query_posts(array( 
                                    'post_type' => 'franchise',
                                    'showposts' => 100,
                                    'orderby'=>'title','order'=>'ASC'
                                ) );  
                                $title_2 = 'A';
                            ?>
                            <?php while (have_posts()) : the_post(); ?> 
                                <?php
                                    $title = get_the_title();
                                    $title_1 = $title[0];
                                    if ($title_1 !== $title_2){
                                        echo '<li>&nbsp;</li><li><h3>' . $title_1 . '</h3></li><li>&nbsp;</li>';
                                        $title_2 = $title_1;
                                    }
                                ?>                              
                                    <li><a href="<?php echo get_the_permalink(); ?>"><?php echo get_the_title(); ?></a></li>
                                <?php endwhile;?>
                            </ul>

Come ho detto - non è la migliore pratica.. ma puoi sistemare e lavorare da qui :)

2 apr 2018 18:09:56
Commenti

query_posts 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 il più 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. Non deve essere utilizzata all'interno del Loop di WordPress.

Amit P Amit P
18 ott 2024 10:27:22

nota che se vuoi modificare/cambiare una query, devi farlo tramite il filtro pre_get_posts, altrimenti query_posts raddoppia il numero di query e interrompe la paginazione senza soluzioni alternative. Se insisti nell'usarlo, devi ripulire dopo utilizzando wp_reset_query() dopo il loop, altrimenti tutto ciò che viene dopo il loop utilizzerà il post sbagliato

Tom J Nowell Tom J Nowell
24 ott 2024 18:56:36