2

Im Using a post query in wordpress BUT the Pagination is not working, i don't know whats the problem BUT here is my code and i guess it's correct and no problem with it

it shows that there is pages BUT when i Click on Next Page it refresh the page and don't show any new results just the same page.

Im Using it on Static page to be The Home page of my theme

<?php

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$post_query = query_posts(array(
    'post_type'      => 'cover', // You can add a custom post type if you like
    'paged'          => $paged,
    'posts_per_page' => 1
));

?>

<?php if ( have_posts() ) : ?>

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

<?php endwhile; ?>

///Pagination Function in Functions.php
<?php my_pagination(); ?>

<?php else: ?>

    No Results

<?php endif; ?>

Pagination Function

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;

        $big = 999999999; // need an unlikely integer

        echo paginate_links( array(
            'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
            'format' => '?paged=%#%',
            'current' => max( 1, get_query_var('paged') ),
            'total' => $wp_query->max_num_pages
        ) );
    }
endif;
  • 2
    after a lot of Searches and googling i fix it by using $paged = (get_query_var('page')) ? get_query_var('page') : 1; $args=array('post_type'=>'cover','posts_per_page'=>2,'paged'=>$paged); query_posts($args); – Youssef Subehi Dec 18 '13 at 2:01
1

This solution needs to be revised for that pagination functions are in functions.php.

I am using Reverie master theme (which uses foundation framework), that theme uses pagination function which is in functions.php

if( ! function_exists( 'reverie_pagination' ) ) {
function reverie_pagination() {
    global $wp_query;

    $big = 999999999; // This needs to be an unlikely integer

    // For more options and info view the docs for paginate_links()
    // http://codex.wordpress.org/Function_Reference/paginate_links
    $paginate_links = paginate_links( array(
        'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
        'current' => max( 1, get_query_var('paged') ),
        'total' => $wp_query->max_num_pages,
        'mid_size' => 5,
        'prev_next' => True,
        'prev_text' => __('&laquo;'),
        'next_text' => __('&raquo;'),
        'type' => 'list'
    ) );

    // Display the pagination if more than one page is found
    if ( $paginate_links ) {
        echo '<div class="pagination-centered">';
        echo $paginate_links;
        echo '</div><!--// end .pagination -->';
        }
    }
}

I have revised this function as

    if( ! function_exists( 'reverie_pagination' ) ) {
    function reverie_pagination() {
        global $wp_query, $another_query;

        $big = 999999999; // This needs to be an unlikely integer
        if ( is_front_page()) {
            $myqueryis = $another_query;
            $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
            } else {
            $myqueryis = $wp_query;
            $paged = get_query_var('paged');
            }
        // For more options and info view the docs for paginate_links()
        // http://codex.wordpress.org/Function_Reference/paginate_links
        $paginate_links = paginate_links( array(
            'base' => str_replace( $big, '%#%', get_pagenum_link($big) ),
            'current' => max( 1, $paged ),
            'total' => $myqueryis->max_num_pages,
            'mid_size' => 5,
            'prev_next' => True,
            'prev_text' => __('&laquo;'),
            'next_text' => __('&raquo;'),
            'type' => 'list'
        ) );

        // Display the pagination if more than one page is found
        if ( $paginate_links ) {
            echo '<div class="pagination-centered">';
            echo $paginate_links;
            echo '</div><!--// end .pagination -->';
        }
    }
}

the variable $another_query is my custom WP_Query. This questions author used *query_posts* to get results but I have used *new WP_Query*.

And the query which I have used inside front-page is;

 $args =  array(
            'post_type' => 'post',  
            'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
            );
 $another_query = new WP_Query( $args );
0

If you have multiple loops in same page (for ex. in front_page) , sometimes pagination gets broken.

I have solved problem by using same query name; From above example we used $myqueryis = $another_query; and in function we used 'total' => $myqueryis->max_num_pages, and also I gived the query args and query like this;

$args =  array(
    'post_type' => 'post',  
    'post__not_in'   => $do_not_duplicate,
    'paged' => $paged,
        );
 $another_query = new WP_Query( $args );

with second the loop example

$secondargs =  array(
        'post_type' => 'post',  
        'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
        'posts_per_page' => 2,  // for testing purpose to see if pagination works properly
            );
 $another_query = new WP_Query( $secondargs );

and maybe with third the loop example

$thirdargs =  array(
        'post_type' => 'post',  
        'post__not_in'   => $do_not_duplicate,
        'paged' => $paged,
        'posts_per_page' => 5,  // for testing purpose to see if pagination works properly
            );
 $another_query = new WP_Query( $thirdargs );

this is worked properly for page/1 page/2 page/...

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.