query_posts non ordina per titolo

6 giu 2012, 12:42:45
Visualizzazioni: 50K
Voti: 4

Sembra un bug stupido, ma come posso ordinare per titolo? Continua comunque ad ordinare per data! Sto usando:

query_posts( array( 
    'post_type'      => 'page',
    'posts_per_page' => -1,
    'orderby'        => 'title',
    'order'          => 'ASC'
) );

Voglio utilizzare questo in una funzione come SHORTCODE. Quello che sto cercando di ottenere è creare una mappa del sito / indice di tutte le voci in ordine alfabetico. Inoltre sto usando l'ultima versione di WP.

7
Commenti

Possiamo vedere un var_dump() o print_r() della query generata? Inoltre, un po' di contesto per questo codice sarebbe utile. Stai modificando la query del loop principale o eseguendo un loop secondario?

Chip Bennett Chip Bennett
6 giu 2012 18:26:07

ho creato una funzione che funziona come shortcode, mostra tutte le voci come l'Indice, diciamo che mostra una lettera e dopo la lettera tutte le voci che iniziano con quella lettera, come una mappa del sito. Ti posterò l'array nella Domanda.

Tommixoft Tommixoft
6 giu 2012 19:36:10

Beh l'array sembrava ENORME ed era ordinato per data, quindi ho deciso di non postarlo qui. Non sono nuovo a php o wordpress quindi non credo di aver dimenticato qualcosa nel codice. Ti ho postato una versione semplificata della mia funzione.

Tommixoft Tommixoft
6 giu 2012 19:45:50

Stai usando questo come SHORTCODE? Significa che lo stai eseguendo all'interno del contenuto del post**?

Chip Bennett Chip Bennett
6 giu 2012 19:51:09

Sì, ma sto usando lo shortcode nella pagina, inoltre il mio contenuto è vuoto, solo lo shortcode, comunque, quindi cosa posso fare? dovrei creare un template ed evitare lo shortcode? Penso anche che dovrebbe resettare la query e crearne una nuova con la mia..quindi dov'è il problema? sono confuso

Tommixoft Tommixoft
6 giu 2012 19:53:42

Una pagina è un post. Questo non farà alcuna differenza. Ci sono così tante cose sbagliate in questo approccio che non so davvero da dove cominciare. Cosa stai cercando di ottenere, in definitiva? Probabilmente dovremo riscrivere la domanda di conseguenza, per poter rispondere in modo appropriato.

Chip Bennett Chip Bennett
6 giu 2012 20:18:16

come ho detto, voglio creare un elenco alfabetico di tutti i post (nel mio tipo di post selezionato, in questo caso la pagina è per esempio). Così i visitatori in una singola pagina possono vedere tutte le voci come l'indice di un libro. Ma ho capito che dovrò usare SQL invece di una query sui post, grazie per l'aiuto, proverò con questo nuovo approccio.

Tommixoft Tommixoft
6 giu 2012 20:20:59
Mostra i restanti 2 commenti
Tutte le risposte alla domanda 2
1
10

Grazie a Chip Bennett che mi ha fatto notare che sbagliavo utilizzando query_posts all'interno del contenuto. Quindi ho usato get_posts e ho ottenuto ciò che volevo, grazie!

Ecco un esempio di come puoi farlo, se hai lo stesso problema che avevo io:

function qualche_nome(){

global $post;
$tmp_post = $post;
$args = array( 'post_type'=>'page', 'numberposts' => -1, 'orderby'=> 'title', 'order' => 'ASC' );
$myposts = get_posts( $args );

         if ( !empty($myposts) ) {
              foreach( $myposts as $post ) : setup_postdata($post);
              the_title();
              echo '<br>';             

              endforeach;

         } 

          $post = $tmp_post;

 }
6 giu 2012 20:31:50
Commenti

Se aggiungerai il codice effettivo che hai utilizzato per risolvere la tua domanda, sarò felice di votare positivamente.

Chip Bennett Chip Bennett
6 giu 2012 21:40:48
0
-1

Un altro post contiene questo codice all'interno di una funzione, ma per chi cerca semplicemente di aggiungere post in ordine alfabetico a un tema personalizzato, ad esempio, è possibile utilizzare quanto segue...

<?php // Ordina i post dalla categoria *** in ordine alfabetico
global $post;
$temp_post = $post;
$args = array( 'category' => *categoryID*, 'numberposts' => -1, 'orderby' => 'title', 'order' => 'ASC' );
$these_posts = get_posts( $args );

if( !empty($these_posts) ) {
    foreach( $these_posts as $post ) : setup_postdata($post);
?>

<?php 

/* HTML/PHP code goes here to display each post */

the_title("<h2>", "</h2>");
the_content("<div class='content'>", "</div>"); 

?>

<?php 
    endforeach; // Fine del Loop.
}
$post = $temp_post;
?>
19 mar 2018 21:37:44