Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have this code that returns list of post title as links, but when I add the 'orderby' and 'order' parameters - it returns results but 'orderby, order, rand' do not work, can anyone tell me what I'm doing wrong? Thanks!

<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>
share|improve this question
1  
Missing single quotes on the ASC.. just a typo or possibly related? –  t31os Mar 23 '11 at 10:49
    
Could you be more specific on what's not working (e.g. does your code not return any results or ...)? –  Manzabar Mar 23 '11 at 12:55
    
@t31los, tried the quotes - thanks but still no luck. @Manzabar - thank you - I've updated the information. Results are returned 'order, orderby, rand' do not take effect. Thanks you. –  user3907 Mar 23 '11 at 13:43
add comment

4 Answers

Why don't you try to use query_posts instead?

Something like:

$args = array(
    'orderby' => 'rand',
    'order'    => 'ASC'
);
query_posts( $args );
share|improve this answer
1  
Thank you all for your help, silly me - it was conflicting with a plugin 'Post Type Order' (Order Post Types Objects using a Drag and Drop Sortable javascript capability) –  user3907 Mar 25 '11 at 9:18
add comment

Yes, this is the correct syntax:

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

However plugins can keep this from working properly. Try disabling ALL plugins and see if that helps. Two known plugins which keep orderby=rand from working are Post Type Order and WP_Sticky

Also, if you have Post Types order installed make sure you visit the Admin page and check the settings. You can use this plugin and keep it from automatically re-ordering posts:

And then you can use the code for Post Types Order to specifically order those posts in places where you need them to be ordered via the custom/menu-order. Here is the example code for that plugin:

The following PHP code will still return the post in the set-up Order:

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

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

Or:

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

If the Auto Sort is uncheck you will need to use the "orderby" and "order" parameters:

$args = array(
'post_type' => 'feature',
'orderby'   => 'menu_order',
'order'     => 'ASC'
);
share|improve this answer
add comment

try this code

<?php 
   remove_all_filters('posts_orderby');
   query_posts('orderby=rand'); 
?>

got the answer from here

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

share|improve this answer
add comment

You probably forgot to setup_postdata inside your foreach loop to get template tags to work.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.