Wordpress Custom post page with wp_pagenavi doesn't work

Viewed 63

I have custom page for posts which has to show up 9 posts per page and I used wp_pagenavi plugin but it doesn't work. Please help!

        <div class="page-content__wrapper">
            <?php 
                $post_category = get_field('page_category');
                $posts = get_posts( array(
                    'numberposts' => 9,
                    'category_name' => $post_category,
                    'orderby'     => 'date',
                    'order'       => 'DESC',
                    'post_type'   => 'post',
                    'suppress_filters' => true,
                ) );
                foreach( $posts as $post ){
                    setup_postdata($post);
                    ?>
                        //...posts
                    <?php
                }
                wp_pagenavi();
                wp_reset_postdata();
            ?>
            
        </div>
1 Answers

I used WP_Query() to solve this problem (without wp_pagenavy plugin :)

<?php
      $paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; // setup
      $post_category = get_field('page_category');  // getting category name
                
      $posts= new WP_Query(array(
          'post_type'=> 'post',
          'posts_per_page' => 9,
          'paged' => $paged,                        // don't forget to give this argument
          'category_name' => $post_category,
      ));
                
      if($posts->have_posts()) : 
          while($posts->have_posts())  : $posts->the_post(); ?>
              // All posts will be here!
          <?php endwhile; ?>

          <div class="mt-30 text-center">
              <?php
                  $GLOBALS['wp_query'] = $posts; 

                  the_posts_pagination(
                      array(
                          'mid_size' => '2',
                          'prev_text' => '<i class="fa fa-hand-o-left"></i> <',
                          'next_text' => '> <i class="fa fa-hand-o-right"></i>',
                          'screen_reader_text' => ' '));
                    ?>
                </div>
                <?php else :?>
                    <h3><?php _e('404 Error&#58; Not Found'); ?></h3>
                <?php endif; ?>
                <?php wp_reset_postdata();?> 
Related