Добрый день! Столкнулся с такой проблемой. Ни как не могу ограничить количество выводимых элементов на странице и настроить пагинацию. Сайт не реагирует на ограничение постов на настройках админки, не помогают и плагины. Ограничения не вводятся, пагинация не включается. На главной странице выдаются все посты (товары) одним длиннющим списком.
Как я понял, вот кусок кода из 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’ , но это не приводит ни к каким изменениям. Хотя, может я неверно его изменял?
Буду безумно благодарен за советы и помощь.
Все вы правельно делали. ‘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();
выдает корректное количество постов.
Не могли бы вы мне еще подсказать, что нужно добавить в код, чтобы не поместившиеся посты уходили на другую страницу, т.е. реализовать пагинацию. Заранее огромное спасибо за ответ!
Смотрите, нужно сделать вот такую конструкцию:
тоесть нужно обьявить глобально global $pages;
и добавить: ‘pages’ => $pages
+ нужен еще код пагинации