Разбиение WordPress на страницы не отображается

#wordpress

#wordpress

Вопрос:

Для нового шаблона WordPress я закодировал цикл, который работает нормально. Но разбивки на страницы нет. Кто-нибудь видит, почему не отображается разбивка на страницы? Спасибо!

Мой цикл:

 <?php
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

                    $args = array(
                            'post_type' => 'post',
                            'numberposts' => -1,
                            'posts_per_page' => 9,
                            'paged' => $paged,
                            'cat' => '4'
                            );
                                                                        
                        $the_query = new WP_Query( $args );

                                                                        
            if ( $the_query->have_posts() ) {
                        while ( $the_query->have_posts() ) {
                                            $the_query->the_post();
                ?>

                                ......
            <?php
                    }
} else { echo 'no posts found';  }
                                                                                                                wp_reset_postdata();
?>
  

И в нижней части страницы:

 <?php the_posts_pagination( array( 'mid_size'  => 2 ) ); ?> 
  

Комментарии:

1. пожалуйста, удалите 'numberposts' => -1, форму args array . вы можете попробовать другой способ, также описанный в моем ответе.

Ответ №1:

Пожалуйста, попробуйте это.

 if ( ! function_exists( 'pagination' ) ) :
  function pagination( $paged = '', $max_page = '' ){
    global $wp_query
    $big = 999999999; // need an unlikely integer
    if( ! $paged )
    $paged = get_query_var('paged');
    if( ! $max_page )
    $max_page = $wp_query->max_num_pages;
    
    echo paginate_links( array(
      'base'       => str_replace($big, '%#%', esc_url(get_pagenum_link( $big ))),
      'format'     => '?paged=%#%',
      'current'    => max( 1, $paged ),
      'total'      => $max_page,
      'mid_size'   => 2,
      'prev_text'  => __('«'),
      'next_text'  => __('»'),
      'type'       => 'list'
    ) );
  }
endif;
  

И шаблон цикла будет выглядеть так —

   $paged = ( get_query_var( 'paged' ) ) ? absint( get_query_var( 'paged' ) ) : 1;        $args = array(
      ''post_type' => 'post',
      'posts_per_page' => 9,
      'paged' => $paged,
      'cat' => '4'
    );
    
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) :
      while ( $loop->have_posts() ) : $loop->the_post();
      
      get_template_part( 'content', get_post_format() );
      
      endwhile;
       
      pagination($paged, $loop->max_num_pages);// Pagination Function
      
      endif;
      wp_reset_postdata();
  

Комментарии:

1. Спасибо, Раджат, но я получаю два уведомления, и вывод останавливается после первой статьи. Уведомления: 1) Неопределенная переменная: wp_query in … в строке 86 это было бы тогда: $ max_page = $ wp_query-> max_num_pages; 2) Попытка получить свойство ‘max_num_pages’ не-объекта в … в строке 86 (я уже упоминал эту строку) Есть идеи?

2. привет @rabox66, пожалуйста, посмотрите мой обновленный ответ. Пожалуйста, добавьте global $wp_query начало определений pagination функций и используйте pagination функцию типа `pagination($paged, $loop-> max_num_pages);`.