get_post aleatoriu și ordonare nu funcționează
Am acest cod care returnează o listă de titluri de articole ca link-uri, dar când adaug parametrii 'orderby' și 'order' - returnează rezultate dar 'orderby, order, rand' nu funcționează, poate cineva să-mi spună ce fac greșit? Mulțumesc!
<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(); ?>">›› <?php the_title(); ?></a></li>
<?php endif ;?>
<?php endforeach; ?>
</ul>

Da, aceasta este sintaxa corectă:
$args = array(
'orderby' => 'rand',
'order' => 'ASC'
);
query_posts( $args );
Totuși, plugin-urile pot împiedica acest lucru să funcționeze corect. Încearcă să dezactivezi TOATE plugin-urile și verifică dacă asta ajută. Două plugin-uri cunoscute care împiedică funcționarea orderby=rand
sunt Post Type Order
și WP_Sticky
.
De asemenea, dacă ai instalat Post Types Order, asigură-te că vizitezi pagina de administrare și verifici setările. Poți folosi acest plugin și să-l împiedici să reordonare automat postările:
http://img829.imageshack.us/img829/2616/pictureot.png
Apoi poți folosi codul pentru Post Types Order pentru a ordona specific acele postări în locurile unde ai nevoie să fie ordonate prin custom/menu-order. Iată exemplul de cod pentru acel plugin:
Următorul cod PHP va returna în continuare postarea în ordinea stabilită:
$args = array(
'post_type' => 'feature'
);
$my_query = new WP_Query($args);
while ($my_query->have_posts())
{
$my_query->the_post();
(..codul tău..)
}
Sau:
$posts = get_posts($args);
foreach ($posts as $post)
{
(..codul tău..)
}
Dacă opțiunea Auto Sort este dezactivată, va trebui să folosești parametrii "orderby" și "order":
$args = array(
'post_type' => 'feature',
'orderby' => 'menu_order',
'order' => 'ASC'
);

Mulțumesc pentru avertizare. "Intuitive Custom Posts Order" provoacă cu siguranță această problemă!

A fost ciudat de specific și corect. Post Types Order a fost problema. Mulțumesc!

Nu folosesc acel plugin, dar multe dintre exemplele de pe wordpress.org folosesc "sort_order" în loc de "order", care nu a funcționat, în timp ce aceasta funcționează. Mulțumesc.

Dacă sunteți găzduit pe WP Engine, trebuie să activați manual ordonarea aleatoare în setări, altfel 'orderby' => 'rand'
nu va funcționa.
https://wpexplorer-themes.com/total/docs/random-order-wpengine/

De ce nu încerci să folosești query_posts în schimb?
Ceva de genul:
$args = array(
'orderby' => 'rand',
'order' => 'ASC'
);
query_posts( $args );

încearcă acest cod
<?php
remove_all_filters('posts_orderby');
query_posts('orderby=rand');
?>
am obținut răspunsul de aici
http://www.reinaris.nl/wp/wordpress-random-post-order-not-working-orderbyrand/

Am întâmpinat aceeași problemă și am avut norocul să găsesc acest thread. Am încercat o soluție diferită, probabil mai puțin elegantă decât celelalte, dar poate utilă în anumite cazuri.
În esență, am amestecat postările înainte de a le afișa:
<?php
$selectedPosts = get_posts($args);
shuffle($selectedPosts);
foreach ($selectedPosts as $selectedPost) :
setup_postdata( $selectedPost );
?>
<!-- elementele postului aici -->
<?php
endforeach;
wp_reset_postdata();
?>

Dacă utilizați wp-engine pe site-ul dvs. WordPress, verificați opțiunea ALLOW ORDER BY RAND(). Puteți citi un articol despre aceasta aici: https://wpengine.co.uk/support/about-order-by-rand/
