pagination doesn’t show up for custom post type

Another user on here suggested that my use of queries was incorrect so I’m changing the code. However, the pagination in the first block of code (below) isn’t showing up in the HTML while the second one (my original) shows up fine.

This one doesn’t work (new code):

                    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                    $loop = new WP_Query( array(
                        'post_type' => 'movies',
                        'paged' => $paged,
                        'posts_per_page' => 6
                    ));

                    if($loop->have_posts()){
                        while ( $loop->have_posts() ) {
                            $loop->the_post();

                            << LOOP GOES HERE >>


                   <?php
                      }
                   }
                   my_paginate_links();
                   wp_reset_postdata();
                   ?>

This one works (my original code):

                    $c=0;
                    $i=1;

                    $temp = $wp_query;
                    $wp_query = null;
                    $wp_query = new WP_Query();
                    $wp_query->query('post_type=movies' . '&paged=' . $paged . '&posts_per_page=6');

                    while ( $wp_query->have_posts() ) : $wp_query->the_post(); $c++;


                 << LOOP GOES HERE >>

                <?php
                    endwhile; 
                    my_paginate_links();
                    $wp_query = null;
                    $wp_query = $temp;
                    wp_reset_query();
                ?>

How can I get pagination to show up in the first block of code?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

Rather than attempt to fix your query, I recommend you sidestep it entirely by using custom post type archives!

With permalinks on, you should be able to view a list of all your movies posts by going to:

example.com/movies

Then, in your theme, create archive-movies.php, and it will be used instead of the archive.php/index.php for movies archives. Make sure to use the default loop not a custom loop, and WordPress will take care of the post type and pagination in your query.

To control how many posts are displayed on this archive, you can do a filter on pre_get_posts to modify the main query before it happens.

function john_movies_pagesize( $query ) {
    // exit out if it's the admin or it isn't the main query
    if ( is_admin() || ! $query->is_main_query() )
        return;
    // so its not admin, and its the main query, is it the movies post archive?
    if ( is_post_type_archive( 'movies' ) ) {
        // it is!! Set the posts_per_page to 6
        $query->set( 'posts_per_page', 6 );
        return;
    }
}
add_action( 'pre_get_posts', 'john_movies_pagesize', 1 );

Method 2

Here is a working example of how to use paged pagination with custom post types:

<?php
$paged = ( get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array( 'post_type' => 'newsfeed', 'posts_per_page' => 5, 'paged' => $paged );
$newsquery = new WP_Query( $args );
if ( $newsquery->have_posts() ) :
while ( $newsquery->have_posts() ) : $newsquery->the_post();

the_excerpt(); //query here

global $newsquery; $total_pages = $newsquery->max_num_pages; if ( $total_pages > 1 ) {
$big = 999999999; // need an unlikely integer

echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'prev_text' => __(' Prev'),
'next_text' => __('Next '),
'current' => max( 1, get_query_var('paged') ),
'total' => $newsquery->max_num_pages
) );

}
endif; wp_reset_postdata();
?>


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x