Завершение цикла пагинации в PHP

26 февр. 2013 г., 21:37:06
Просмотры: 78
Голосов: 0
<div id="pagination">
    <div class="prev"><?php next_posts_link('&larr;') ?></div>
    <div class="pages">
        <?php
            global $wp_query;
            $big = 9999;
            echo paginate_links(array(
                'base' => str_replace($big, '%#%', get_pagenum_link($big)),
                'format' => '?paged=%#%',
                'total' => $wp_query->max_num_pages,
                'current' => max(1, get_query_var('paged')),
                'show_all' => false,
                'end_size' => 1,
                'mid_size' => 5,
                'prev_next' => false,
                'prev_text' => 'Предыдущая',
                'next_text' => 'Следующая',
                'type' => 'list'
            ));
        ?>
    </div>
    <div class="next"><?php previous_posts_link('&rarr;') ?></div>
</div>

Привет, у меня настроен цикл пагинации, и я хочу отображать как номера страниц, так и ссылки "предыдущая/следующая". Однако я пытаюсь понять, как можно ограничить отображение номеров до последних 5 статей [1,2,3,4,5] вместо продолжения до [1,2,3,4,5,6,7]. Как мне сделать так, чтобы пагинация заканчивалась на 5 последних опубликованных статьях в моем блоге?

"Я просто хочу отредактировать часть div-class pages, чтобы она заканчивалась на 5." - Надеюсь, это объясняет мою задачу.

Скриншот пагинации WordPress

0
Все ответы на вопрос 1
5

Вы можете попробовать

'total' => min(5,$wp_query->max_num_pages),

Редактирование:

В исходном коде функции paginate_links

http://core.trac.wordpress.org/browser/tags/3.5.1/wp-includes/general-template.php#L1922

ссылки отображаются в цикле с $n = 1; $n <= $total; $n++, и поскольку %#% заменяется на $n, моя идея заключается в ограничении количества отображаемых страниц, ограничивая $total минимумом между 5 и $wp_query->max_num_pages. Надеюсь, это поможет ;-)

26 февр. 2013 г. 21:46:08
Комментарии

Можете объяснить, почему это может решить проблему, и тестировали ли вы это решение?

s_ha_dum s_ha_dum
26 февр. 2013 г. 22:12:02

конечно: я изучил исходный код функции paginate_links и заметил цикл $n = 1; $n <= $total; $n++, а так как %#% заменяется на $n, я подумал, что можно ограничить количество отображаемых ссылок, ограничив $total минимумом из 5 и $wp_query->max_num_pages. По крайней мере, такова была моя идея ;-)

birgire birgire
26 февр. 2013 г. 22:43:04

... как часть вашего ответа. Этот ответ был автоматически помечен как "низкое качество из-за длины и содержания", чего, я уверен, вы хотите избежать. Лучше предоставлять объяснение вместе с предлагаемым решением.

s_ha_dum s_ha_dum
26 февр. 2013 г. 22:52:37

ок, спасибо @s_ha_dum, я зарегистрировался всего несколько недель назад, так что всё ещё учу правила здесь ;-) Я обновлю ответ.

birgire birgire
26 февр. 2013 г. 22:58:32

Спасибо, это сработало! :3 Я не смог найти ничего в кодексе по поводу подобных вещей.

Monstr92 Monstr92
28 февр. 2013 г. 23:17:08