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(); ?>

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()?

| 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 :)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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