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'm am displaying the last 5 posts of a custom post type 'show'.

This gives me the latest post first.

<?php
$args = array(
    'post_type' => 'show',
    'posts_per_page' => 5,
    'order' => 'DESC'
    );
$home_shows = new WP_Query($args);
var_dump($home_shows);
?>

What I need is to actually have the earliest (of the array of the latest shows) first, and the latest show (in that array of latest shows) last.

I am now currently getting (the show date via a custom field meta value):

3/11/12, 3/7/12, 3/4/12, 3/2/12, 2/30/12 etc.

I need: 2/30/12, 3/1/12, 3/4/12, 3/7/12, 3/11/12,

I tried using php's array_reverse like so (added to the above code):

$reversed_shows = array_reverse( $home_shows->posts );

Which gave me really odd results (displayed completely different parts of the post, array order was off).

Any ideas?

share|improve this question
add comment

3 Answers

I figured out what I was doing wrong. A simple beginners mistake.

Array_reverse was working properly, but I wasn't then reassigning the reversed array back to the $home_shows WP_Query, hence not seeing any change.

Here is the answer, and my revised code.

<?php
                    $args = array(
                        'post_type' => 'show',
                        'posts_per_page' => 5,
                        'order' => 'DESC',
                    );
                    $home_shows = new WP_Query($args);
                    //reverse the order of the posts, latest last
                    $array_rev = array_reverse($home_shows->posts);
                    //reassign the reversed posts array to the $home_shows object
                    $home_shows->posts = $array_rev;
                ?>
                <?php $captions = array(); ?>
                <?php if ( $home_shows->have_posts() ) : ?>         
                    <?php while ( $home_shows->have_posts() ) : $home_shows->the_post(); ?>

Thanks for the replies, glad I figured this one out.

share|improve this answer
add comment

Remove all the custom field mess and add an 'order' => 'ASC' to the args array! And you're done!

share|improve this answer
    
What custom field mess? The custom post type? That's needed, as the site has a few custom post types to organize things. I'll try to explain what I mean better via a post edit –  Squadrons Apr 3 '12 at 4:18
    
I apologise for the wrong choice of words. Custom fields are available for default post types too. Just because its a custom post type, all you need is a 'post_type', which you already have. Is it true that you want to display the last posts first? –  Rutwick Gangurde Apr 3 '12 at 4:27
add comment
    <?php
    $args = array(
        'post_type' => 'show',
        'posts_per_page' => 5,
        'order' => 'desc'
        );
    $home_shows = new WP_Query($args);
 //   var_dump($home_shows);

echo "<pre>";
print_r($home_shows->posts);
echo "</pre>";



$array_rev = array_reverse($home_shows->posts);
echo "<pre>";
print_r($array_rev);
echo "</pre>";
  ?>

I tried above for my custom post type...

results post ids : 240,239,238,237 for reverse : 237,238,239,240

There must be something else in proble at your end......

share|improve this answer
    
Orderby is set to date by default! –  Rutwick Gangurde Apr 3 '12 at 6:33
    
@RutwickGangurde have edited my answer... –  Rajeev Vyas Apr 3 '12 at 6:52
    
Why the array reverse? Just switch the order to ASC and you get the last posts first. –  Rutwick Gangurde Apr 3 '12 at 6:58
    
@RutwickGangurde I" think you dont understand his requirement... what he wants is to get last 5 posts and then display them in order that out of that last five smallest date post is first..... –  Rajeev Vyas Apr 3 '12 at 7:03
    
All right, didn't notice that earlier. I just read his edited question! –  Rutwick Gangurde Apr 3 '12 at 7:15
add comment

Your Answer

 
discard

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.