get_post casuale e ordinamento non funzionanti

23 mar 2011, 09:46:45
Visualizzazioni: 63.9K
Voti: 11

Ho questo codice che restituisce un elenco di titoli di post come link, ma quando aggiungo i parametri 'orderby' e 'order' - restituisce i risultati ma 'orderby, order, rand' non funzionano, qualcuno può dirmi cosa sto sbagliando? Grazie!

<ul>
   <?php $post; $cat_posts = get_posts(array('numberposts' => 10, 'orderby' => 'rand', 'order' => ASC, 'category' => $disciplineCatID));
   foreach($cat_posts as $post) : ?>
   <?php $postTitle = get_the_title(); if($title != $postTitle) :?>
   <li><a href="<?php the_permalink(); ?>">&rsaquo;&rsaquo; <?php the_title(); ?></a></li>
   <?php endif ;?>
   <?php endforeach; ?>
</ul>
3
Commenti

Mancano gli apici singoli su ASC.. è solo un refuso o potrebbe essere correlato?

t31os t31os
23 mar 2011 12:49:12

Potresti essere più specifico su cosa non funziona (ad esempio, il tuo codice non restituisce risultati o ...)?

Manzabar Manzabar
23 mar 2011 14:55:23

@t31los, ho provato con gli apici - grazie ma ancora senza successo. @Manzabar - grazie - ho aggiornato le informazioni. I risultati vengono restituiti ma 'order, orderby, rand' non hanno effetto. Grazie.

User User
23 mar 2011 15:43:21
Tutte le risposte alla domanda 7
3
22

Sì, questa è la sintassi corretta:

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

Tuttavia, i plugin possono impedire il corretto funzionamento. Prova a disattivare TUTTI i plugin e verifica se questo risolve il problema. Due plugin noti che impediscono il funzionamento di orderby=rand sono Post Type Order e WP_Sticky.

Inoltre, se hai installato Post Types Order, assicurati di visitare la pagina di Amministrazione e controllare le impostazioni. Puoi utilizzare questo plugin ed evitare che riordini automaticamente i post:

http://img829.imageshack.us/img829/2616/pictureot.png

Quindi puoi utilizzare il codice per Post Types Order per ordinare specificamente quei post nei punti in cui è necessario che siano ordinati tramite custom/menu-order. Ecco il codice di esempio per quel plugin:

Il seguente codice PHP restituirà comunque il post nell'ordine impostato:

$args = array(
'post_type' => 'feature'
);

$my_query = new WP_Query($args);
while ($my_query->have_posts())
{
$my_query->the_post();
(..your code..)          
}

Oppure:

$posts = get_posts($args);
foreach ($posts as $post)
{
(..your code..)     
}

Se l'opzione "Auto Sort" è deselezionata, dovrai utilizzare i parametri "orderby" e "order":

$args = array(
'post_type' => 'feature',
'orderby'   => 'menu_order',
'order'     => 'ASC'
);
22 ott 2011 02:12:15
Commenti

Grazie per la segnalazione. "Intuitive Custom Posts Order" è sicuramente la causa di questo problema!

Mr_Chimp Mr_Chimp
25 ago 2015 13:53:31

Era stranamente specifico e corretto. Post Types Order era il colpevole. Grazie!

Allen Gingrich Allen Gingrich
10 nov 2016 22:53:59

Non sto usando quel plugin, ma molti degli esempi su wordpress.org usano "sort_order" invece di "order", che non funzionava, mentre questo sì. Grazie.

dw1 dw1
9 mar 2017 09:51:49
3

Se sei ospitato su WP Engine, devi abilitare manualmente l'ordinamento casuale nelle tue impostazioni, altrimenti 'orderby' => 'rand' non funzionerà.

https://wpexplorer-themes.com/total/docs/random-order-wpengine/

20 feb 2020 17:55:56
Commenti

grazie, questo mi ha aiutato.

M Haseeb M Haseeb
29 apr 2020 23:19:32

Dopo almeno un'ora di frustrazione... GRAZIE!!

KVDD KVDD
26 mag 2021 08:03:45

Grazie, grazie, grazie! Sono sicuro che mi hai risparmiato un'ora o due!

Shane McCurdy Shane McCurdy
27 lug 2021 06:39:11
1

Perché non provi a usare query_posts invece?

Qualcosa come:

$args = array(
    'orderby' => 'rand',  // Ordina in modo casuale
    'order'    => 'ASC'   // Ordine ascendente
);
query_posts( $args );  // Esegue la query con i parametri specificati
23 mar 2011 16:02:36
Commenti

Grazie a tutti per il vostro aiuto, che stupido che sono - era in conflitto con un plugin 'Post Type Order' (Ordina gli oggetti dei tipi di post utilizzando una funzionalità javascript trascina e rilascia ordinabile)

User User
25 mar 2011 11:18:07
0

prova questo codice

<?php 
   // Rimuove tutti i filtri sull'ordinamento dei post
   remove_all_filters('posts_orderby');
   // Esegue la query con ordinamento casuale
   query_posts('orderby=rand'); 
?>

ho trovato la risposta qui

http://www.reinaris.nl/wp/wordpress-random-post-order-not-working-orderbyrand/

28 nov 2011 19:06:22
0

Probabilmente hai dimenticato di utilizzare setup_postdata all'interno del tuo ciclo foreach per far funzionare i template tag.

28 nov 2011 19:10:51
0

Mi sono imbattuto nello stesso problema e fortunatamente ho trovato questo thread. Ho provato una soluzione diversa, probabilmente meno elegante delle altre, ma potrebbe essere utile in alcuni casi.

In sostanza, ho mescolato i post prima di visualizzarli:

<?php 
    $selectedPosts = get_posts($args);
    shuffle($selectedPosts);

    foreach ($selectedPosts as $selectedPost) : 
    setup_postdata( $selectedPost );
?>

<!-- elementi del post qui -->

<?php 
    endforeach;
    wp_reset_postdata();
?>
9 gen 2016 16:54:35
0

Se hai wp-engine nel tuo sito WordPress, controlla l'opzione ALLOW ORDER BY RAND(). Vedi un articolo qui: https://wpengine.co.uk/support/about-order-by-rand/

3 gen 2019 12:27:09