I am not sure why but I have used get_posts() to query for some data. Then I used setup_postdata() ... I think its used so that I can use functions like the_permalink() etc with the new post data?

<?php foreach ($childPosts as $cp) : setup_postdata($cp); ?>

<article <?php post_class() ?> id="post-<?php the_ID(); ?>">
  <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
  <?php if (has_post_thumbnail()) : ?>
  <a href="<?php the_permalink() ?>"><?php the_post_thumbnail(($hasOutputNotFeaturedDiv) ? 'thumb-small' : null) ?></a>
  <?php endif; ?>
  <?php the_excerpt(); ?>
  <p class="more"><a href="<?php the_permalink() ?>">Read more ...</a></p>
  <?php include (TEMPLATEPATH . '/inc/meta.php' ); ?>
</article>

<?php endforeach; ?>

but it appears that only the_excerpt contains the new post data value, why is that? I find that if I use echo get_the_permalink($cp) it works ok. But I think the shorter version will be better

link|improve this question

feedback

4 Answers

up vote 5 down vote accepted

I could be wrong, but from what I'm seeing, "setup_postdata()" should be used when doing a custom select query (not just query_posts): http://codex.wordpress.org/Displaying_Posts_Using_a_Custom_Select_Query

As well, if you want to use tags like "the_title()" and "the_permalink()" with that custom select query ... you'll need to use the variable name $post specifically (not another variable name) in setup_postdata() - AS WELL - you should call global $post before your "foreach" loop...

So basically follow that example in that codex link. And don't change the variable name $post - otherwise it breaks it.

HTH

link|improve this answer
feedback

Replace the

foreach ( $childPosts as $cp ) : setup_postdata( $cp );

with

foreach ( $childPosts as $post ) : setup_postdata( $post );

So you need to use the exact $post variable along with the setup_postdata().

link|improve this answer
This fixed the the problem I was having. Cheers mate – Jeff K. Mar 2 at 22:05
feedback

When querying posts just use the normal loop with a set of arguments passed into it. Then reset the query at the end.

<?php 

    // makes query respect paging rules
    $paged = get_query_var('paged');

    // defining the arguements for the custom loop
    $variablenameQuery = array(
        'post_type'                 => 'seating-charts',
        'post_status'               => 'publish',
        'cust_tax_name'             => 'custom-tax-term',
        'posts_per_page'            => -1, // neg 1 means all posts
        'orderby'                   => 'date',
        'order'                     => 'ASC',
        'paged'                     => $paged,
    ); // end query

    // pass result into query_posts to get result
    query_posts($variablenameQuery);

?>
<?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>

        <?php // Individual Post Styling ?>

    <?php endwhile; ?>

        <?php // paged navigation - next post, previous post... ?>

    <?php else : ?>

    <h3>Ooops looks like there was an issue. Please <a href="<?php echo get_option('home'); ?>/contact" title="Contact Us">get in touch</a> with us and we'll get the problem fixed.</h3>

<?php endif; ?>

<!-- resets the WordPress Query -->
<?php wp_reset_query(); ?>
link|improve this answer
Thanks, this works. But just for understanding, do you know why setup_postdata() does not seem to work? Did I use it wrongly? – Jiew Meng Feb 19 '11 at 15:16
1  
@jiewmeng - See if using $post instead of $cp fixes the problem. – t31os Feb 20 '11 at 1:28
I vote for the fix @t31os suggests. The examples on the codex show the usage like that and $post is a special variable in WordPress so it might do more inside a loop than what you've used. – curtismchale Feb 20 '11 at 1:54
@t31os, @curtismchale, that didn't appear to work too. It still gives the same result – Jiew Meng Feb 20 '11 at 2:11
feedback

Depending on where you are using setup_postdata() (if it is not in the main loop, or in a function/sidebar widget, for example), you may also need to declare -

global $post;
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

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