Dom Dom - 3 months ago 24
PHP Question

Pagination on custom wp_query in WordPress takes to 404 error page

Im have a loop with wp_query with the following code:

$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();

<?php if ($wp_query->have_posts()) : while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<?php the_title() ?>
<?php endwhile; ?>
<?php else: ?>
<h2><?php _e( 'Sorry, nothing to display.', 'theme' ); ?></h2>
<?php endif; my_pagination(); wp_reset_query()?>

with standard pagination :

function my_pagination()
global $wp_query;
$big = 999999999;
echo paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'prev_text' => __('<i class="fa fa-chevron-left"></i>'),
'next_text' => __('<i class="fa fa-chevron-right"></i>'),
'total' => $wp_query->max_num_pages,

The pagination is showing correctly on the page, but whenever I click on the pagination link it takes me to the error page.

Tried everything now and have no idea what can be the reason for it.

Amy help much apprecieated


Had a hard time with it too :) Was easier to search when I realized it's wrong calculated post per page number, and here is a magic trick: (to be added to functions.php)

function my_post_count_queries( $query ) {
  if (!is_admin() && $query->is_main_query()){
       $query->set('posts_per_page', 1);
add_action( 'pre_get_posts', 'my_post_count_queries' );