WordPress PageNavi Plugin not working on category.php

I have a problem with PageNavi showing 126 pages (for 126 posts this part is almost correct), but instead of breaking it decreases by 10 (13 pages are expected), it shows all the messages on each page. If I change 'numberposts' => 5 , it displays the same 5.

Relevant Code:

 <?php wp_pagenavi(); ?> <?php $args = array( 'category' => 7, 'numberposts' => -1); $allpost = get_posts( $args ); foreach($allpost as $post) : setup_postdata($post); ?> <p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php endforeach; ?> <?php wp_pagenavi(); ?> 

I can’t understand what happened.

Update (full code):

 <?php get_header(); ?> <div id="container"> <div id="content" role="main"> <h1>something</h1> <?php $args = array( 'category' => 7, 'numberposts' => -1); $allpost = get_posts( $args ); foreach($allpost as $post) : setup_postdata($post); ?> <p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php endforeach; ?> </div> </div> <?php get_footer(); ?> 

Work code:

 <?php get_header(); ?> <div id="container"> <div id="content" role="main"> <h1>something</h1> <?php global $paged; if (get_query_var( 'paged' )) $my_page = get_query_var( 'paged' ); else { if( get_query_var( 'page' ) ) $my_page = get_query_var( 'page' ); else $my_page = 1; set_query_var( 'paged', $my_page ); $paged = $my_page; } $args = array( 'cat=7', 'paged' => $my_page, 'posts_per_page' => 10 ); $my_query = new WP_Query( $args ); while ($my_query->have_posts()) : $my_query->the_post();?> <p class="datelist"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> <?php endwhile; wp_pagenavi( array( 'query' => $my_query ) ); wp_reset_query(); ?> </div> </div> <?php get_footer(); ?> 
+4
source share
1 answer

When you use get_posts , you make the request of your choice, rather than using the default vars request generated by WordPress. The PageNavi plugin will not work out of the box on user loops.

As indicated by rbaier4 , you should use the paged variable. Be careful not to mix the default loop with your custom materials and reset variables after you are done.

 global $paged; if (get_query_var( 'paged' )) $my_page = get_query_var( 'paged' ); else { if( get_query_var( 'page' ) ) $my_page = get_query_var( 'page' ); else $my_page = 1; set_query_var( 'paged', $my_page ); $paged = $my_page; } // default loop here, if applicable, followed by wp_reset_query(); $args = array( // other query params here, 'paged' => $my_page ); $my_query = new WP_Query( $args ); // custom loop code wp_pagenavi( array( 'query' => $my_query ) ); wp_reset_query(); 

Hope this helps.

+3
source

Source: https://habr.com/ru/post/1382508/


All Articles