Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

My pagination is only linking to the same posts that are on my front page.

I have 3 posts on my front page, when I press next it goes to /page/2 but only shows the same 3 posts, with no previous button. The next button is still there, but still goes to page/1

Here is the full query.

<?php

            query_posts('post_type=post&posts_per_page=3');

            if ( have_posts() ) : while ( have_posts() ) : the_post();

            $category = choose_one_category(get_the_category());

            switch ($category){
                case "Festival News":
                    $left[] = $post;
                    break;
                case "Industry News":
                    $centre[] = $post;
                    break;
                case "Other":
                    $right[] = $post;
                    break;
            }


            endwhile; 
            ?>
            <div class="custom-pagination">

            <div ><?php previous_posts_link('&laquo; Previous') ?></div>

            <div ><?php next_posts_link('Next &raquo;') ?></div>
            </div>
            <?php endif;



            ?>
share|improve this question
add comment

4 Answers

up vote 10 down vote accepted

Building off of what Rarst has said, I'm pretty sure the query string will retain 'paged' queries even if WP_Query strips it out as irrelevant. You could try replacing your query posts line with this:

global $query_string;
parse_str( $query_string, $my_query_array );
$paged = ( isset( $my_query_array['paged'] ) && !empty( $my_query_array['paged'] ) ) ? $my_query_array['paged'] : 1;
query_posts('post_type=post&posts_per_page=3&paged='.$paged);
share|improve this answer
    
YES!! now, any chance you could explain what is happening? So that I and others can understand it? Many thanks –  Mild Fuzz Oct 6 '10 at 13:16
    
for example, can I use this with custom WP_Query objects? I have a few that are also not working. –  Mild Fuzz Oct 6 '10 at 13:18
    
This also worked for me as well, thanks! –  Sherwin Flight Oct 2 '13 at 13:59
add comment

Pagination functions are meant to be used with main Loop. They are relying on global variables $paged and $wp_query, which are not set by your custom loop.

share|improve this answer
    
how can I correct this? –  Mild Fuzz Oct 6 '10 at 11:55
    
If this is main content/loop of your page you need to work with query_posts(). Otherwise you might need to code your own pagination, at least I don't know how to make native pagination functions work with secondary loop. –  Rarst Oct 6 '10 at 11:58
    
I have ammended the above loop. I get a next button, but the posts are those from the front page. –  Mild Fuzz Oct 6 '10 at 12:22
    
Why shouldn't they be? You are not specifying anything in query except post type and quantity. Also see Preserving original query –  Rarst Oct 6 '10 at 12:53
add comment

If you stumble upon this one, try the following: "Easy Pagination Deamon". Install, activate, use the template tag inside your template...

The link to the stylesheet can be found inside my gists or below the top plugin comment.

share|improve this answer
add comment

Is this on your home page? I had this problem as well and as a workaround, I simply made the link on the first page point to http://www.yoursite.com/category/page/2/ so it skips the first set of values for page one. From there on, the pagination links worked correctly. Here is an example.

share|improve this answer
    
just a little bit hacky –  Mild Fuzz Oct 6 '10 at 14:40
    
agreed but in terms of time, it can be a life saver. Last month, I had to build 14 WP sites in 2 weeks and unfortunately, had to resort to hacks for time's sake. –  moettinger Oct 6 '10 at 14:44
add comment

Your Answer

 
discard

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.