1

I have this loop in my wordpress site which displays the latest posts with their titles, I want to display the post content after the title. I normally retrieve it with the function get_the_content but I cannot make it work in this case. This is the loop:

   while ( $q_query->have_posts() )
   {

    $q_query->next_post();
    $question = get_post($q_query->post);
   $loophtml = $loophtml . "<li><span class='list-question-title'>" . "<a class='list-answer-link' href='" . get_permalink($question->ID) ."'>" . $question->post_title . "</a></span>";
   $loophtml = $loophtml . "<span class='list-number-answers'>" . get_comments_number($question->ID) . " comentarios</span>&nbsp;&#183;&nbsp<a href='" . get_permalink($question->ID) ."'>Comentar</a>";
   $loophtml = $loophtml . "</li>";
   }

Anyone knows how I could do it? Thanks

2 Answers 2

3

try this instead:

...

global $post;
while ($q_query->have_posts()){
  $q_query->the_post();

  $loophtml .= "<li><span class='list-question-title'>" . "<a class='list-answer-link' href='" . get_permalink() ."'>" . get_the_title() . "</a></span>";
  $loophtml .= get_the_content();
  $loophtml .= "<span class='list-number-answers'>" . get_comments_number() . " comentarios</span>&nbsp;&#183;&nbsp<a href='" . get_permalink() ."'>Comentar</a>";
  $loophtml .= "</li>";
}
wp_reset_query();

...
0
2

A little unusual Loop structure you have there. get_the_content() works inside the Loop and with global variables set up. And you are not setting up those global variables.

To work with your current code it will be something like:

apply_filters('the_content', $question->post_content);

To make template tags work properly you need to use setup_postdata(), see examples in get_posts() documentation.

1
  • 2
    Or.. you should also be able call the_post() to setup the vars.. ie. $q_query->the_post(); ... it should have exactly the same effect..
    – t31os
    Commented Dec 18, 2010 at 20:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.