Поддержка WooCommerce Не выводится пагинация

  • Здравствуйте.
    Нужна помощь, не могу решить задачу.
    Необходимо вывести пагинацию в шаблоне пользовательской страницы.

    Проблема.
    Посты выводятся, пагинация отсутствует.

    
    <?php
    $current_page = get_query_var( 'paged' );
    	if( $current_page == 0 ) { $current_page = 1; }
    	// Вывод постов из одной категории по ярлыку
    $args = array(
    	'category_name'    => 'festivals',
    	'post_type' => 'post',
    	'orderby'    => 'date',
    	'posts_per_page'    => '2',
    	'paged' => get_query_var('paged') ?: 1 // страница пагинации
    );
    $query = new WP_Query( $args ); 
    if ( $query->have_posts() ) { ?>
    <!-- верстка -->
    <?php 
    while ( $query->have_posts() ) :
        $query->the_post(); ?>
        <!-- вывод верстки -->
    <h3> <?php the_title(); ?></h3>
    <?php 
    endwhile; 
     $args = array(
    	'show_all'     => false, // показаны все страницы участвующие в пагинации
    	'end_size'     => '',     // количество страниц на концах
    	'mid_size'     => '',     // количество страниц вокруг текущей
    	'prev_next'    => true,  // выводить ли боковые ссылки "предыдущая/следующая страница".
    	'prev_text'    => __('<'),
    	'next_text'    => __('>'),
    	'add_args'     => true, // Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
    	'add_fragment' => '',     // Текст который добавиться ко всем ссылкам.
    	'screen_reader_text' => __( 'Posts navigation' ),
    );
    	 the_posts_pagination($args);
    ?>
     <?php } else {
          echo __( 'Записей не найдено' );
        }
      ?>
    
Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Модератор Yuri

    (@yube)

    пагинацию в шаблоне пользовательской страницы

    У статической страницы нет и не может быть пагинации.

    the_posts_pagination()
    Выводит на экран ссылки пагинации на след./пред. сет постов. Используется на страницах архивов (рубрики, метки, …).
    wp-kama

    Для пагинации альтернативной выборки WP_Query можно использовать функцию paginate_links().

    Подскажите. Как правильно написать в запросе query_posts код в шаблоне category.php или как прописать через wp_query?
    Имеется такой код

    
    <h2><?php // если мы на странице категории
    if( is_category() ){
      $cat_name = get_queried_object()->name;
      $cat_slug = get_queried_object()->slug;
      echo $cat_name;
    } ?>     
    </h2>
    <?php
        query_posts("category_name=$cat_slug&paged=$paged");
                    if( have_posts() ){
                        while( have_posts()){
                            the_post(); ?>
                          <div class='new-post'>
                           <div class='img-post'>
                             <?php echo get_the_post_thumbnail(); ?>
                           </div> 
                           <h3>
                              <?php the_title(); ?>
                           </h3>
                           <div class='content-post'>
                             <?php the_excerpt(); ?>
                           </div>
                           <a>" class="btn new-post">Подробнее</a>
                          </div>
                           <?php 
                        }
                       the_posts_pagination( $args = array(
      'show_all'     => false, // показаны все страницы участвующие в пагинации
      'end_size'     => '',     // количество страниц на концах
      'mid_size'     => '',     // количество страниц вокруг текущей
      'prev_next'    => true,  // выводить ли боковые ссылки "предыдущая/следующая страница".
      'prev_text'    => __('Назад'),
      'next_text'    => __('Вперед'),
      'add_args'     => true, // Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
      'add_fragment' => '',     // Текст который добавиться ко всем ссылкам.
      'screen_reader_text' => __( 'Posts navigation' ),
    ) );
                        wp_reset_query();
                    } else {
                        echo "<p>Записей нет</p>";
                    }
    ?>
    
    Модератор Yuri

    (@yube)

    Как правильно написать в запросе query_posts код в шаблоне category.php

    Вы же спрашивали про «в шаблоне пользовательской страницы», а не рубрику.
    Зачем там еще query_posts, если на момент подключения шаблона выборка уже сделана?

    Зачем if( is_category() ) в шаблоне category.php? Что еще там может быть?

    @jonni148, почему в чужом вопросе пишете? Правила форума не читали?

    И код надо оформлять как код, а не как попало.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Как правильно написать в запросе query_posts

    «Почему не следует использовать query_posts() в WordPress»

    Извините, не читал правила.

    Т.к. в шаблоне странице нельзя вывести, то что мне нужно, поэтому спрашиваю, чтобы выводить через шаблон категории.
    Как правильно применить переменную $cat_name в запросе query_posts?
    Я не силен в wordpress на столько, надеюсь на вашу помощь.

    Извините, не читал правила.

    Ну так прочтите и перестаньте их нарушать каждым своим постом

    Модератор Yui

    (@fierevere)

    永子

    разделила тему, и код оформила как нужно, но не надо считать что так будет всегда, можно было просто всё это из чужой темы удалить.

    Спасибо, что правильно оформили код.
    Согласен, что условие category не нужно.
    Через WP_Query нужно выводить.
    С переменной $cat_name разобрался, но пагинация не заработала.
    Если я правильно понял, то весь код нужно брать в обратные кавычки.

    • Ответ изменён 3 года, 4 месяца назад пользователем jonni148.

    Если я правильно понял, то весь код нужно брать в обратные кавычки.

    Вы эту панель и кнопки на ней в упор не видите?

    <?php
    
    $args = array(
      'post_type' => 'post',
      'category_name' => $cat_slug,
      'orderby' => 'date',
      'posts_per_page'    => '2',
      'paged' => get_query_var('paged') ?: 1 // страница пагинации
    );
    $query = new WP_Query( $args );
    
                    if($query->have_posts() ){
                        while( $query->have_posts()){
                             $query->the_post(); ?>
    <article id="blog" class="blog blog-info">
            <?php echo get_the_post_thumbnail(); ?>
            <div class="blog-info">
              <div class="blog-post-title">
                  <h3><?php the_title(); ?></h3>
              </div>
            <div class="blog-post-info">
              <?php the_excerpt(); ?>
            </div>
            <a href="<?php the_permalink(); ?>" class=" btn btn-large">
              Читать
            </a>
            </div>
            </article>
                           <?php 
                        }
                       the_posts_pagination( $args = array(
      'show_all'     => false, // показаны все страницы участвующие в пагинации
      'end_size'     => '',     // количество страниц на концах
      'mid_size'     => '',     // количество страниц вокруг текущей
      'prev_next'    => true,  // выводить ли боковые ссылки "предыдущая/следующая страница".
      'prev_text'    => __('Назад'),
      'next_text'    => __('Вперед'),
      'add_args'     => true, // Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
      'add_fragment' => '',     // Текст который добавиться ко всем ссылкам.
      'screen_reader_text' => __( 'Posts navigation' ),
    ) );
                        wp_reset_postdata();
                    } else {
                        echo "<p>Записей нет</p>";
                    }
    ?>

    Вот код, но пагинация не работает и не выводится.

    Нашел решение, все заработало.

    <?php
    $current_page = (get_query_var('paged')) ? get_query_var('paged') : 1; // определяем текущую страницу блога
     
     $args = array(
      'post_type' => 'post',
      'category_name' => $cat_slug,
      'orderby' => 'date',
      'posts_per_page'    => get_option('posts_per_page'), // значение по умолчанию берётся из настроек, но вы можете использовать и собственное
      'paged' => $current_page // текущая страница
    );
    $query = new WP_Query( $args );
                    if($query->have_posts() ):
                        while( $query->have_posts()):
                             $query->the_post(); ?>
    <article id="blog" class="blog blog-info">
            <?php echo get_the_post_thumbnail(); ?>
            <div class="blog-info">
              <div class="blog-post-title">
                  <h3><?php the_title(); ?></h3>
              </div>
            <div class="blog-post-info">
              <?php the_excerpt(); ?>
            </div>
            <a href="<?php the_permalink(); ?>" class=" btn btn-large">
              Читать
            </a>
            </div>
            </article>
              <?php endwhile;           
    the_posts_pagination( $args = array(
      'show_all'     => false, // показаны все страницы участвующие в пагинации
      'end_size'     => '',     // количество страниц на концах
      'mid_size'     => '',     // количество страниц вокруг текущей
      'prev_next'    => true,  // выводить ли боковые ссылки "предыдущая/следующая страница".
      'prev_text'    => __('Назад'),
      'next_text'    => __('Вперед'),
      'add_args'     => true, // Массив аргументов (переменных запроса), которые нужно добавить к ссылкам.
      'add_fragment' => '',     // Текст который добавиться ко всем ссылкам.
      'screen_reader_text' => __( 'Posts navigation' ),
    ) );
              ?>       
    <?php wp_reset_postdata(); ?> 
             <?php else : ?>
               <h3>Записей нет.</h3>
    <?php endif; ?>

    Первый вариант вашего кода у меня заработал в такой интерпретации:

    
    <?php
    
    if( isset( $_REQUEST[ 'page_number' ] ) ){
      $current_page = $_REQUEST[ 'page_number' ];
    }
    else{
      $current_page = 1;
    }
    
    $args = array(
    	'category_name'    => 'festivals',
    	'post_type' => 'post',
      'posts_per_page' => '2', 
    	'orderby'    => 'date',
    	'paged' => $current_page
    );
    
    $query = new WP_Query( $args ); 
    while ( $query->have_posts() ) {
      $query->the_post();
      the_title( '<h3>', '</h3>' );
    }
    
    $args = array(
      'total' => $query->max_num_pages,
      'current' => $current_page,
      'format' => '?page_number=%#%'
    );
    
    echo paginate_links( $args );
    
    ?>
    
    

    Ещё вариант:

    
    <?php
    
    if( isset( $_REQUEST[ 'page_number' ] ) ){
      $current_page = $_REQUEST[ 'page_number' ];
    }
    else{
      $current_page = 1;
    }
    
    $args = array(
      'category_name'    => 'festivals',
      'post_type' => 'post',
      'posts_per_page' => '2', 
      'orderby'    => 'date',
      'paged' => $current_page
    );
    
    $query = new WP_Query( $args ); 
    while ( $query->have_posts() ) {
      $query->the_post();
      the_title( '<h3>', '</h3>' );
    }
    
    $args = array(
      'total' => $query->max_num_pages,
      'current' => $current_page,
      'format' => '?page_number=%#%'
    );
    
    global $wp_query;
    $wp_query->max_num_pages = $query->max_num_pages; 
    
    the_posts_pagination( $args );
    
    ?>
    
    
    • Ответ изменён 3 года, 4 месяца назад пользователем fevenili.
Просмотр 13 ответов — с 1 по 13 (всего 13)
  • Тема «Не выводится пагинация» закрыта для новых ответов.