0

I'm using HTML5Blank theme to edit my own theme on clean basis, and trying to set the pagination but it's not displaying for some reason, and I cant find out why.

Index.php calls loop then pagination templates

<section>
    <?php get_template_part('loop'); ?>

    <?php get_template_part('pagination'); ?>
</section>

Pagination.php calls pagination function

<div class="pagination">
    <?php html5wp_pagination(); ?>
</div>

The function is

// Pagination for paged posts, Page 1, Page 2, Page 3, with Next and  Previous Links, No plugin
function html5wp_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')),
    'total' => $wp_query->max_num_pages
));
}

I haven't touched anything related to the pagination, and I can see that the <div class="pagination"> is called in the HTML using Chrome console, but is not displaying anything.

I thought this could be because I had not enough post to display the pagination, but I tried to add a lot of posts, and it's still not showing.

Any idea of what is the problem ?

2
  • Are you sure you have more posts than the "Blog pages show at most" setting under Settings > Reading? Nov 10, 2015 at 11:46
  • Do echo $wp_query->max_num_pages; in your template and check what it returns Nov 10, 2015 at 12:07

1 Answer 1

-1

You need to add your query variable to the global used on the function, in that case "$wp_query", just like that:

<?php
  $yourQuery_args = ['posts_per_page' => '7',];
  $yourQuery = new WP_Query( $yourQuery_args );

  $wp_query = $yourQuery;
  get_template_part('pagination'); 
?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.