I made a query for my custom post type "websites". I'm trying to get the pagination working but I'm running in some errors. I think the whole code is ok, only the part just before the end while tags. I just don't know how to get this right. Any help would be enormously appreciated!


        // WP_Query arguments
        $args = array (
            'post_type'              => 'website',
            'post_status'            => 'publish',
            'pagination'             => true,
            'posts_per_page'         => '5',
            'posts_per_archive_page' => '5',
            'ignore_sticky_posts'    => false,
            'order'                  => 'DESC',

        // Get current page and append to custom query parameters array
        $mfs_query['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;

        // The Query
        $mfs_query = new WP_Query( $args );

        // Pagination fix
        $temp_query = $wp_query;
        $wp_query   = NULL;
        $wp_query   = $mfs_query;

        // The Loop
        if ( $mfs_query->have_posts() ) {
            while ( $mfs_query->have_posts() ) {
                // do something

                ?> <div class="submission">

                    <a class="submission-thumb" href="<?php echo get_permalink(get_the_ID()); ?>">
                        <?php echo the_post_thumbnail(); ?>

                    <a class="submission-title" href="<?php echo get_permalink(get_the_ID()); ?>">
                        <h3><?php the_title(); ?></h3> <span class="posted-ago"><?php echo human_time_diff( get_the_time('U'), current_time('timestamp') ) . ' ago'; ?></span>

                    <a class="submission-link" href="<?php the_field('site_url'); ?>" target="_blank">Visit</a>


                <?php } ?>  
                <?php endwhile; else : ?> 

            <?php wp_reset_postdata(); ?>

            <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>

            <?php // Custom query loop pagination
            previous_posts_link( 'Older Posts' );
            next_posts_link( 'Newer Posts', $mfs_query->max_num_pages ); ?>

            <?php $wp_query = null; $wp_query = $temp_query;?>


Just make sure that the code you have write in archive-{post_type}.php file or you can use ajax pagination

if you need to use page template: Add this 'has_archive' => 'page template' when you register the custom post type

  • thanks for your reply, but I think there's also something wrong with my code because I get a syntax error. The problem excists somewhere in the endwhile; else : part of the code I guess. – fabrikgrafik Mar 7 '15 at 11:52
  • @fabrikgrafik just replace <?php endwhile; else : ?> with <?php } ?> – Mostafa Maklad Mar 7 '15 at 12:15
  • thank you, but I think I still need the endwhile else because now after my loop output I get "Sorry, no posts ...". And also after that I get: "Newer Posts ?>". So still a little mistake there. Also pagination is not working ... I have added "has archive" to my CPT register but no difference. I have page-websites.php and also archive-websites.php to be sure and none works .. Thanks again for your help, I am clueless and trying to learn how this works. – fabrikgrafik Mar 8 '15 at 11:32

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.