WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have the following template page. I am attempting to output all of the articles from the category 4. However I am only getting some of the posts, about 20% of them. Not sure what would be causing this. Also is there a way to use the category name in the query_posts instead of the category number?

Template Name: Blog

<?php get_header(); ?>

            <div id="content">

                <div id="inner-content" class="wrap clearfix">

                    <div id="main" class="eightcol first clearfix" role="main">

                   <?php query_posts('cat=4'); ?>

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

                        <article id="post-<?php the_ID(); ?>" <?php post_class('clearfix'); ?> role="article">

                            <header class="article-header">

                                <h1 class="page-title"><?php the_title(); ?></h1>
                  <p class="byline vcard"><?php
                    printf(__('Posted <time class="updated" datetime="%1$s" pubdate>%2$s</time> by <span class="author">%3$s</span>.', 'bonestheme'), get_the_time('Y-m-j'), get_the_time(__('F jS, Y', 'bonestheme')), bones_get_the_author_posts_link());

                            </header> <!-- end article header -->

                            <section class="entry-content">
                                <?php the_content(); ?>
                            </section> <!-- end article section -->

                            <footer class="article-footer">
                                <p class="clearfix"><?php the_tags('<span class="tags">' . __('Tags:', 'bonestheme') . '</span> ', ', ', ''); ?></p>

                            </footer> <!-- end article footer -->

                            <?php comments_template(); ?>

                        </article> <!-- end article -->

                        <?php endwhile; ?>  

                        <?php else : ?>

                            <article id="post-not-found" class="hentry clearfix">
                                <header class="article-header">
                                    <h1><?php _e("Oops, Post Not Found!", "bonestheme"); ?></h1>
                                <section class="entry-content">
                                    <p><?php _e("Uh Oh. Something is missing. Try double checking things.", "bonestheme"); ?></p>
                                <footer class="article-footer">
                                    <p><?php _e("This is the error message in the page-custom.php template.", "bonestheme"); ?></p>

                        <?php endif; ?>

                    </div> <!-- end #main -->

                    <?php get_sidebar(); ?>

                </div> <!-- end #inner-content -->

            </div> <!-- end #content -->

<?php get_footer(); ?>
share|improve this question
up vote 1 down vote accepted

For your issue regarding only returning 20% of your posts, try the following

<?php query_posts('cat=4&posts_per_page=-1'); ?>

Note: By default, 10 posts are returned. -1 will return all posts in the resulting set.



For your question about passing through the Category Name, you can pass through the category_name as parameter, which accepts the category SLUG.



As mentioned by @Bart Karp, you may want to reconsider your usage of query_posts.

See the following answer for more information on usage of WP_Query vs query_posts() vs get_posts() - When should you use WP_Query vs query_posts() vs get_posts()?

share|improve this answer

Avoid query_posts at all costs, even the Codex itself says its the easiest, but not preferred way to alter the default query.

Try using WP Query with category parameter instead:

$query = new WP_Query( 'category_name=staff' );

There's also get_posts() function.

Just forget about slow query_posts() that almost always raises many problems and you should be just fine :)

share|improve this answer

Your Answer


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.