I have a post that shows the titles and excerpts from a specific category underneath the content. Currently this is coded into a specific template like this:

<?php query_posts('category_name=dogs&showposts=5'); if (have_posts()) : ?>

This is fine but I need the client to be able to handle this themselves from a generic template so that I don't need to create a new one each time a category is created.

I want the client to create a new post as normal but then use a custom field to pull in posts from a specified category underneath.

For displaying the category name I would use something like this (assume we have a custom field name of "featured" and a value of "dogs":

<?php echo get_post_meta($post->ID, 'featured', true); ?>

So what I am guessing I need to do is replace the category_name=dogs part of my first example with something that pulls in the meta info.

And that is where my knowledge ends. I know I can post one into the other but I don't know how to resolve it.

Pleeeeeeeeeeeeeeease help!



ps using wordpress 3.2.1 and a custom theme

2 Answers 2


Finally solved it! I needed to add this at the end of each loop :)

<?php $my_query = new WP_Query(array( 'category_name' => get_post_meta($post->ID, 'featured', true), 'posts_per_page' => 5, )); if ($my_query->have_posts()): ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?> content etc goes here
<?php endwhile; ?> <?php endif; ?><?php wp_reset_query(); ?> 

many thanks



Try to avoid query_posts:

$my_query = new WP_Query(array(
  'category_name'  => get_post_meta($post->ID, 'featured', true),
  'posts_per_page' => 5,

if ($my_query->have_posts()){

   while ($my_query->have_posts()){



  • ok I had a look through the codex and worked out what i needed and ended up with the following. The downside is that while it is now displaying posts and there is the correct number its just pulling up the 5 latest and not ones specifically form that category. so I am a bit puzzled! <?php $my_query = new WP_Query(array( 'category_name' => get_post_meta($post->ID, 'featured', true), 'posts_per_page' => 5, )); if ($my_query->have_posts()): ?> <?php while ($my_query->have_posts()) : $my_query->the_post(); ?> content etc goes here <?php endwhile; ?> <?php endif; ?> Sep 21, 2011 at 15:18
  • Maybe the requested category name doesn't match the real one? Try capitalizing it with ucfirst(get_post_meta($post->ID, 'featured', true)) Sep 21, 2011 at 15:24
  • It turned out that a bit further up the page I was using query_posts still and that was interfering (basically there is the article and then one excerpt from one cat and then 5 excerpts from another cat). But I have found that I can only show the 1 excerpt or the 5 excerpts so i guess the two blocks of code are interfering with each other as the second block always seems to show the latest posts (hope that makes sense) Sep 21, 2011 at 15:33
  • Don't use query_posts at all, because it messes up some global variables. Use WP_Query instead; it does the same thing, but without the side effects Sep 21, 2011 at 21:20
  • Yeah i have done away with it now. But my two my_query bits of code seem to interfere with each other. any idea how i get round that? thanks for your help! Sep 22, 2011 at 7:48

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.