get_post aleatoriu și ordonare nu funcționează

23 mar. 2011, 09:46:45
Vizualizări: 63.9K
Voturi: 11

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(); ?>">&rsaquo;&rsaquo; <?php the_title(); ?></a></li>
   <?php endif ;?>
   <?php endforeach; ?>
</ul>
3
Comentarii

Lipsesc ghilimele simple în jurul lui ASC.. e doar o greșeală de scriere sau poate fi legat de problema ta?

t31os t31os
23 mar. 2011 12:49:12

Poți fi mai specific legat de ce nu funcționează (de ex. codul tău nu returnează niciun rezultat sau...)?

Manzabar Manzabar
23 mar. 2011 14:55:23

@t31los, am încercat cu ghilimele - mulțumesc, dar încă nu merge. @Manzabar - mulțumesc - am actualizat informațiile. Rezultatele sunt returnate, dar 'order, orderby, rand' nu au niciun efect. Mulțumesc.

User User
23 mar. 2011 15:43:21
Toate răspunsurile la întrebare 7
3
22

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'
);
22 oct. 2011 02:12:15
Comentarii

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

Mr_Chimp Mr_Chimp
25 aug. 2015 13:53:31

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

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

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.

dw1 dw1
9 mar. 2017 09:51:49
3

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/

20 feb. 2020 17:55:56
Comentarii

mersi, acesta m-a ajutat.

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

După cel puțin o oră de frustrare... MULȚUMESC!!

KVDD KVDD
26 mai 2021 08:03:45

Mulțumesc, mulțumesc, mulțumesc! Sunt sigur că mi-ai economisit o oră sau două!

Shane McCurdy Shane McCurdy
27 iul. 2021 06:39:11
1

De ce nu încerci să folosești query_posts în schimb?

Ceva de genul:

$args = array(
    'orderby' => 'rand',
    'order'    => 'ASC'
);
query_posts( $args );
23 mar. 2011 16:02:36
Comentarii

Mulțumesc tuturor pentru ajutor, prostia mea - era un conflict cu plugin-ul 'Post Type Order' (Ordonarea obiectelor de tip Post folosind o funcționalitate javascript de sortare prin Drag and Drop)

User User
25 mar. 2011 11:18:07
0

î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/

28 nov. 2011 19:06:22
0

Probabil ai uitat să folosești setup_postdata în interiorul buclei tale foreach pentru ca funcțiile de șablon să funcționeze.

28 nov. 2011 19:10:51
0

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();
?>
9 ian. 2016 16:54:35
0

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/

3 ian. 2019 12:27:09