简体   繁体   中英

WP_Query Pagination not working with custom query on custom post type

I have read as many other problems like mine and not been able to find a fix. For some reason my custom query is not paginating and I can not work out why. It is probably a silly reason but hope you can help.

Here is my code.

  <?php
            global $wp_query;
            $title = $wp_query->post->post_title;
            $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
            $query = new WP_Query(
                array(
                    'paged' => $paged,
                    'wpse18703_title' => "$title",
                    'posts_per_page' => 10,
                    'post__not_in'  => array($post->ID),
                    'post_type' => array('post', 'features'),

                )
            );

            if ($query->have_posts()){
                while ( $query->have_posts() ) { $query->the_post(); ?>
                    <a href="<?php echo get_permalink(); ?>">
                    <div class="small-12 large-12 gdb-news-container">
                    <div class="small-12 large-4 columns gdb-news-image">
                        <?php the_post_thumbnail('game-news-thumb'); ?>
                    </div>
                    <div class="small-12 large-8 columns game-title">
                        <h5><?php the_title(); ?></h5>
                    <?php echo content(20); ?>
                    </div>
                        <div class="clearfix"></div>
                    </div>
                    </a>

         <?php
                } //end while
                wp_reset_query();
            } //end if
            ?>

            <?php if ( function_exists('reverie_pagination') ) { reverie_pagination(); } else if ( is_paged() ) { ?>
                <nav id="post-nav">
                    <div class="post-previous"><?php next_posts_link( __( '&larr; Older posts', 'reverie' ) ); ?></div>
                    <div class="post-next"><?php previous_posts_link( __( 'Newer posts &rarr;', 'reverie' ) ); ?></div>
                </nav>
            <?php } ?>
<?php 
    if(isset($_GET['paged']) && !empty($_GET['paged'])):endif;
    global $wp_query;
    $temp = $wp_query;
    $wp_query = null;
    $title = $wp_query->post->post_title;
    $args = array(
        'paged' => $paged,
        'wpse18703_title' => "$title",
        'posts_per_page' => 10,
        'post__not_in'  => array($post->ID),
        'post_type' => array('post', 'features')
    );
    $wp_query = new WP_Query($args);
    if($wp_query->have_posts()){
        while($wp_query->have_posts()){
            $wp_query->the_post(); ?>
            <a href="<?php echo get_permalink(); ?>">
                <span class="small-12 large-12 gdb-news-container">
                    <span class="small-12 large-4 columns gdb-news-image">
                        <?php the_post_thumbnail('game-news-thumb'); ?>
                    </span>
                    <span class="small-12 large-8 columns game-title">
                        <h5><?php the_title(); ?></h5>
                        <?php echo content(20); ?>
                    </span>
                </span>
            </a>
        <?php }
    }
    $wp_query = null;
    $wp_query = $temp;
    if(function_exists('reverie_pagination')){reverie_pagination();} else if (is_paged()){ ?>
        <nav id="post-nav">
            <div class="post-previous"><?php next_posts_link( __( '&larr; Older posts', 'reverie' ) ); ?></div>
            <div class="post-next"><?php previous_posts_link( __( 'Newer posts &rarr;', 'reverie' ) ); ?></div>
        </nav><?php
    }
?>

I changed you div's with the classes "small-12" to span's because it is invalid W3C code to put a div inside an anchor tag, so you might have to modify your css file, depending on how it was coded.

I think you are using your $paged variable wrong (i am guessing you are using it inside "pages" not "posts"). This should work both on pages and posts:

if ( get_query_var( 'paged' ) ) {
    $paged = absint( get_query_var( 'paged' ) );
} elseif ( get_query_var( 'page' ) ) {
    $paged = absint( get_query_var( 'page' ) );
} else {
    $paged = 1;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM