I have this typical WordPress page (page.php):

<?php the_post(); ?>
<div id="rightcol">
 <div <?php post_class(); ?>>
 <?php the_content(); ?>

All works fine; have some shortcode, [gallery], in the page content.

So then I add a simple loop to the page to display random posts form a given category:

<?php query_posts('category_name=interesting_sites&posts_per_page=3&orderby=rand'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <div <?php post_class(); ?>>
  <h1><?php the_title(); ?></h1>
  <?php the_content(); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

Then, shortcode in page content fails! Why this happens? Any ideas?

  • What version of WP are you using?
    – Cristian
    Jul 9, 2011 at 11:46
  • It be 3.2 - Related to the version (haven't tested)?
    – tim
    Jul 9, 2011 at 12:11
  • are you using a page template? are you trying to show the gallery before the list of posts? you might need to use two loops to do this.
    – Michael
    Jul 9, 2011 at 12:56

1 Answer 1


You really shouldn't use query_posts() for anything other than the main loop of that page and use either WP_Query() or get_posts(), try this:

$my_query = new WP_Query(
        'category_name' => 'interesting_sites',
        'posts_per_page' => 3,
        'orderby' => 'rand'
while ($my_query->have_posts()){
    <div <?php post_class(); ?>>
        <h1><?php the_title(); ?></h1>
        <?php the_content(); ?>
  • Awesome that - I will learn the differences. Sláinte.
    – tim
    Jul 11, 2011 at 10:45

Your Answer

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

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