добавьте туда
$query->set( 'posts_per_page', 5 );
Flector, количество выводимых записей указано в админке в разделе Настройки -> Чтение, это раз.
Добавка этой строки сразу после
$query = new WP_Query( array( 'category_name' => 'news' ) );
ничего не дала. Я и саму строчку правил так:
$query = new WP_Query( array( 'category_name' => 'news', 'posts_per_page' => '10') );
Тоже ничего не дало, это два.
<?php
$catname = wp_title('', false);
$new_query = new WP_Query();
$new_query->query('category_name='.$catname.'&showposts=5'.'&paged='.$paged);
?>
<?php while ($new_query->have_posts()) : $new_query->the_post(); ?>
<?php the_title(); ?>
<?php } ?>
<?php endwhile; ?>
<?php next_posts_link('« Older Entries', $new_query->max_num_pages) ?>
<?php previous_posts_link('Newer Entries »') ?>
http://wordpress.org/support/topic/adding-pagination-to-a-wp_query-loop?replies=16
Всё ещё более грустно и дело, конечно, не в обновлении до четвёрки. В разделе Настройки -> Чтение стоят настройки:
На главной странице отображать — Ваши последние записи.
На страницах блога отображать не более — 10 записей.
Тут в общем, вопросов нет — на главной странице эти записи выводит приведённый мною выше код. При этом есть на сайте рубрика «Новости», у неё ярлык «news». В ней-то и лежат записи. Их значительно больше десяти. Во-первых, не работает корректно навигация между страницами, на каждой из которых выводится по 10 записей. Во-вторых, при попытке перейти по адресу /news/ вместо ожидаемого уже списка из 10 новостей, происходит перенаправление на самую старую новость.
Посмотреть можно тут:
http://apkm.info/
Ума не приложу, что делать.
да почему не листает вариантов быть может много. начиная с отсутствия query_string , заканчивая отсутствием обязательных параметров цикла.
не уповайте вы так на то, что прописано в админке — там общие значения, которые легко перезаписываются своими параметрами в цикле вывода.
Flector
Вы правы, такой вариант:
$query = new WP_Query( array( 'category_name' => 'news',
'posts_per_page' => '10',
'paged' => get_query_var( 'paged' )
) );
заставил, таки выводить посты с нужных страниц. Критичным был параметр paged, впрочем, Вы о нем мне писали выше, это я не сразу сообразил как вставить это в условие.
А вот проблема с выводом одной записи вместо целого их списка осталась.
при попытке перейти по адресу /news/ вместо ожидаемого уже списка из 10 новостей, происходит перенаправление на самую старую новость.
а точнее — что за проблема с выводов одной записи?
Flector
На самом деле суть проблемы я уже описал. Вот адрес сайта, где на неё можно посмотреть лично: http://apkm.info/
На главной сейчас отображаются посты из рубрики Новости. Их десять, и благодаря Вам, пагинация настроена и работает. Вверху сайта есть горизонтальное меню, первый же пункт которого — Новости, ведет по адресу: http://apkm.info/news/
По идее, при нажатии на этот пункт меню, должны загрузиться всё те же 10 записей из указанной рубрики. Вместо этого почему-то открывается один материал из рубрики — самая старая запись. Не могу понять, почему так происходит и как это исправить?
а какой файл шаблона у вас отвечает за вывод рубрик и его код приведите тут.
Отдельного специального шаблона, типа category.php я не создавал. Есть index.php, в котором имеются вставки вида:
<?
if ( in_category(8) ) {
...
}
?>
Где перебираются нужные мне категории и в цикле вроде того, что уже показывал выше, описано как необходимо выводить списки записей.
ну так приведите полностью код, как иначе ошибку найти? 🙂
Как-то так:
<?php get_header(); ?>
<?php get_sidebar(); ?>
<div id="container">
<?php
/*Готовим переменные для вывода в разных рубриках*/
$t1 = "Новости";
$t2 = "Участники Ассоциации ПКМ";
$t3 = "Партнеры Ассоциации";
$df = "d.m.Y";
$p1 = "Подробнее";
$pp = "Предыдущая страница →";
$np = "← Следующая страница";
$addr = "adres_rus";
// выводим список новостей
if ( is_home() || in_category(8) ) {
echo "<h1>".$t1."</h1>";
$query = new WP_Query( array( 'category_name' => 'news',
'posts_per_page' => '10',
'paged' => get_query_var( 'paged' )
) );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
echo "<p class=\"data\">"; echo the_time($df); echo "</p>";
echo "<h2><a href=\""; echo the_permalink(); echo "\">"; echo the_title(); echo "</a></h2>";
echo "<p>"; echo the_excerpt(); echo "</p>";
echo "<p class=\"podrobno\"><a href=\""; echo the_permalink(); echo "\">"; echo $p1; echo " >>></a></p>";
}
echo "<p class=\"navbar\">"; echo posts_nav_link(' | ', $np, $pp); echo "</p>";
} else { echo "<p>Не найдено.</h2>"; }
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
// конец вывода списка новостей
...
?>
В коде далее вместо многоточия идут аналогичные блоки для вывода списков ещё двух рубрик: Участники Ассоциации и Партнеры, я эти куски кода опустил, так как с ними всё нормально.
Вопрос же в том, почему вместо списка записей из рубрики Новости, открывается одна запись (то есть используется шаблон single.php?
in_category проверяет принадлежность записи к рубрике, а не вывод рубрики. попробуйте использовать is_category.
Исправил, работает ровно так же. То есть проблема никуда не делась, увы.
ну приведите полностью код, интересно сравнить циклы вывода Ж)
у вас явно при клике на «новости» используется шаблон вывода одиночной записи — указанный код вообще не используется.