Навигация при query_posts

[ ←Вернуться к стандартному виду ]

Печатная версия

Случайно нашла отличное решение проблем с навигацией при использовании query_posts

Одно решение было известно отсюда:

вместо:

<?php query_posts('cat=1'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

использовать:

<?php $numpost=10;//сколько записей на одной странице нам надо вывести
if($paged>1) $offset=$numpost*($paged-1);
else $offset=0;//чтобы знать, с какой статьи начать, если это не первая страница
query_posts('cat=1&offset='.$offset.'&showposts='.$numpost); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

Я так всегда и делала, пока задача не повернулась ж… другим боком: количеством записей необходимо управлять из админки (Настройки — Чтение). В примере выше количество выводимых записей ограничено в самом коде: $numpost=10

При всем при этом еще и плагин wp-pagenavi (v. 2.20) отказывался работать как положено.

Спас меня такой код:

<?php query_posts($query_string.'&cat=1'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

Такой расклад сразу понравился и плагину wp-pagenavi, и wp 2.2.3, и мне тоже :)

p.s.
на wp 2.3.1 также работает.


Оставить комментарий »

  1. # AntiDen 17.02.2011 в 20:42

    Соника спасибо, перерыл весь инет нигде не нашел толкового ответа и только Вы подсказали правильный ответ. Очень помогли.

  2. # deftoettan (1) 01.03.2011 в 14:25

    спасибо вам за данный пост, несколько дней выносил свой мозг в поисках решения проблемы !

  3. # Сергей 13.03.2011 в 19:44

    А у меня в индексе (статейный каталог) выводится так:
    <?php wp_get_archives('type=postbypost&limit=10'); ?>
    и тоже не пролистывается (даже если вручную ввожу /page/2/). Ошибки не выдает, но показывает первую страницу. В категориях и архивах работает нормально. Не подскажете, как забороть?
    Пробовал такое:
    <?php wp_get_archives($query_string.'type=postbypost&limit=10'); ?>
    Но так при пролистывании кажет типа архивы по месяцам. Если ставлю $query_posts, ничего не меняется.

  4. # Goryny4 13.07.2011 в 17:22

    Огромное спасибо!!!! очень поиогло

  5. # Денис 07.09.2011 в 02:44

    Большое спасибо за инфу. Полночи бился. Вам и marfix - огромное спасибо!

  6. # Мю Юм (1) 21.10.2011 в 01:03

    у меня  формируется вывод записей так:
    <?php $postslist = get_posts('numberposts=-1&orderby=data&o rder=DESC&category=3'); ?> 
    <?php foreach ($postslist as $post) : setup_postdata($post); ?> 

    <h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>

    .. 
    <?php endforeach; ?>

    и как связать вывод записей с постраничной навигацией не могу понять..( стандартные выводы ничего не дают, плагины тоже не вызывают реакции
    и самое непонятное, что в гугле вообще такого не нахожу.. - как связать get_posts c постраничной навигацией..

  7. # tvenjoy 06.12.2011 в 13:28

    У меня в категориях при переходе на вторую страницу отправляет на главную
    а на главной при переходе на вторую страницу выдает белый экран
    подскажите что делать?
    вот что у меня:
     

    <?php
    global $query_string;
    $i = 0;
    if (is_category()) query_posts($query_string . "&showposts=$post_number&paged=$paged&cat=$cat");
    else query_posts($query_string . "&showposts=$post_number&paged=$paged");
    ?>
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <?php $i++; ?>
    <?php include(TEMPLATEPATH . '/includes/entry.php'); ?>
    <?php endwhile; ?>

  8. # Zalmat (1) 15.02.2012 в 13:05

    Та же трабла, только используется отдельный файл loop.php (шаблон
    Sight 1.0 от WPSHOWER)
    <?php if (is_home()) { query_posts($query_string.'&cat=5,19,20'); } ?>
    <?php if ( have_posts() ) : ?>

    <div id="loop" class="<?php if ($_COOKIE['mode'] == 'grid') echo 'grid'; else echo 'list'; ?> clear">

    <?php while ( have_posts() ) : the_post(); ?>

  9. # Саша (1) 04.04.2012 в 00:49

    я сделала так, осталась еще одна проблема:
    контент переключается, а активная страница всегда №1
    Т.е. на какую ни перейдешь, всегда пишется №1 из.. (10). Подскажите, пжалст как это исправить?

  10. # John 15.04.2012 в 00:06

    Спасибо, код реально помог с навигацией ! ! !  и PageNavi работает как нужно .

  11. # Виталий (1) 17.04.2012 в 15:02

    Здравствуйте Sonika.Читал не понял(тугодум).Подскажите как мне сделать в категориях постраничный просморт записей а не лентой.Вордпресс 3.3.1

  12. # Thomas 21.05.2013 в 22:58

    уверен, что не сможете сделать нормальную пагинацию на такой вот рубрике

    <?php
    function filter_where($where = '') {
    //за последние 30 дней
    $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
    return $where;
    }
    add_filter('posts_where', 'filter_where');
    $args = array(
    'orderby' => 'meta_value_num',
    'meta_key' => 'ratings_score',
    );
    query_posts ( $args );
    ?>
     
    чтобы я не делал ничего не помогает. А если б заработало, было б просто превосходно. Кажется суть в том что в рубрике category-2.php нет записей, но собираются и сортируются они в ней, так как всё это прописано в шаблоне category-2.php

  13. # Marina 05.06.2013 в 22:36

    Большое СПАСИБО!!!! Очень выручили!!!

  14. # Алексей 08.04.2014 в 12:24

    Добрый день! Имеется вопрос, быть может Вы сможете на него ответить.
    Итак, на главной странице шаблона, над которым я работаю, имеется сразу три цикла:
    1) Случайные посты,
    2) Посты из категории А,
    3) Посты из категории Б.
    Каждый цикл выглядит примерно так:
    <?php $posts = query_posts($query_string . '&posts_per_page=4'); if( have_posts() ){ while( have_posts() ){ the_post(); ?>
    <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
    <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
    </div>
    <?php }  ?>
    <div class="navigation">
    <div class="next-posts"><?php next_posts_link(); ?></div>
    <div class="prev-posts"><?php previous_posts_link(); ?></div>
    </div>
    <?php
    }
    else
    echo "<h2>Записей нет.</h2>";  ?>
    <?php wp_reset_query(); ?>

    Задача: под каждым из циклов должны быть ссылки на предыдущую и следующую страницы. Применяемая мной конструкция создаёт эти ссылки, НО! при нажатии, скажем, на "следующая страница" под любым из циклов показывается следующая страница всех имеющихся циклов, а нужно чтобы только для каждого из них был свой *_posts_link();. Каким образом это можно реализовать?

Подписаться на фид.
RSS комментариев к этой записи. | TrackBack URI

Написать комментарий


Все саттелиты — в топку! Даже не сомневайтесь. Для вопросов о вордпресс не по теме поста есть два русскоязычных форума по wordpress.

[ ←Вернуться к стандартному виду ]

Печатная версия