1

Тема: Проблемы с установкой пагинации и количеством отображения постов.

Добрый день! Столкнулся с такой проблемой. Ни как не могу ограничить количество выводимых элементов на странице и настроить пагинацию.  Сайт не реагирует на ограничение постов на настройках админки, не помогают и плагины. Ограничения не вводятся, пагинация не включается. На главной странице выдаются все посты (товары) одним длиннющим списком.

Как я понял, вот кусок кода из index.php отвечающий за вывод и сортировку.

 ?>

<aside class="side-middle">
<!-- Панель управления -->
          <div class="c-detail">
            <div class="curency">
              <span class="lcol">Валюта
              </span>
              <a id="rub" class="rub" onclick="reloadPrice('rub');">Рубль</a>
              <a id="usd" class="rub" onclick="reloadPrice('usd');">Доллар</a>
              <a id="eur" class="rub" onclick="reloadPrice('eur');">Евро</a>
              <a id="uah" class="rub" onclick="reloadPrice('uah');">Гривна</a>
            </div>
            <div class="view-item">
              <span class="lcol">Вид товара
              </span>
              <a class="item-list cur "></a>
              <a class="item-block "></a>
            </div>
            <div class="sort">
              <span class="lcol">Сортировать по
              </span>
              <span class="sort-name"><?php echo $array_sort[$sortby]; ?>
              </span>
              <ul class="sort-list">
                <li>
                <a id="gname" href="?sortby=gname" class="filter">имени (А - Я)</a>
                </li>
                <li>
                <a id="gnameg" href="?sortby=gnameg" class="filter">имени (Я - А)</a>
                </li>
                <li>
                <a id="popular" href="?sortby=popular" class="filter">популярн.</a>
                </li>
              </ul>
            </div>
          </div>        
<!-- конец Панель управления -->        

<div class="content-item">  
<?php

if ($sortby == 'popular'){
  $args = array('cat' => '-24', 'meta_key' => 'views', 'meta_compare' => '>=', 'meta_value' => 0, 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => -1 );
}
if ($sortby == 'gname'){
  $args = array('cat' => '-24', 'orderby' => 'title', 'order' => 'ASC', 'posts_per_page' => -1 );
}
if ($sortby == 'gnameg'){
  $args = array('cat' => '-24', 'orderby' => 'title', 'order' => 'DESC', 'posts_per_page' => -1 );
}
query_posts($args);
 $ex_rates = new EX_rates();
 $allRates = $ex_rates->coursesInArray();
 $procEco = 1.14;
                if ( have_posts() ) : while ( have_posts() ) : the_post();  
                include(TEMPLATEPATH . '/include/view-product.php');
                endwhile;
                else:
                include(TEMPLATEPATH . '/include/no-post.php');
                endif; 
wp_reset_query();                
?>
</div>
</aside>
<?php get_footer(); ?> 


Пробовал изменять параметр 'posts_per_page' , но это не приводит ни к каким изменениям. Хотя, может я неверно его изменял?
Буду безумно благодарен за советы  и помощь.

2

Re: Проблемы с установкой пагинации и количеством отображения постов.

Все вы правельно делали. 'posts_per_page' => -1 отвечает за вывод к-ства записей: если -1 то выводить все, если поставить, наример 'posts_per_page' => 5, то будет показано 5 записей

Только я б еще заменил query_posts($args);  на $query = new WP_Query($args);
и строку if ( have_posts() ) : while ( have_posts() ) : the_post();
на if ( $query->have_posts() ) : while (  $query->have_posts() ) :  $query->the_post();

3

Re: Проблемы с установкой пагинации и количеством отображения постов.

n@y wega пишет:

Все вы правельно делали. 'posts_per_page' => -1 отвечает за вывод к-ства записей: если -1 то выводить все, если поставить, наример 'posts_per_page' => 5, то будет показано 5 записей

Только я б еще заменил query_posts($args);  на $query = new WP_Query($args);
и строку if ( have_posts() ) : while ( have_posts() ) : the_post();
на if ( $query->have_posts() ) : while (  $query->have_posts() ) :  $query->the_post();


Спасибо огромное! После ваших рекомендаций:
Только я б еще заменил query_posts($args);  на $query = new WP_Query($args);
и строку if ( have_posts() ) : while ( have_posts() ) : the_post();
на if ( $query->have_posts() ) : while (  $query->have_posts() ) :  $query->the_post();

выдает корректное количество постов.

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

4

Re: Проблемы с установкой пагинации и количеством отображения постов.

Смотрите, нужно сделать вот такую конструкцию:

                        <?php 
                            global $pages;

                            $args = array(
                                'post_type' => 'partners', 
                                'posts_per_page' => -1,
                                'pages' => $pages
                            );

                            $part_query = new WP_Query($args);

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

тоесть нужно обьявить глобально global $pages;
и добавить: 'pages' => $pages
+ нужен еще код пагинации