Тема пагинации для WP настигла и меня, не знаю на сколько правильный этот вариант, но он имеет место быть, так как все работает, да и модифицировал его я совсем чуть чуть, под свои нужды. На одном сайте мне нужно было сделать фильтр по произвольным полям в определенной категории, на эту же страницу нужно было повесить пагинацию, так как статей очень много, без нее не обойтись. Фильтр был сделан через query_posts, а он умеет выводить записи из определенной страницы стандартной пагинации параметром paged, я этим и воспользовался, другие способы у меня не работали. Начнем с файла functions.php, в него я определил следующий код:

function pag_nav() {
global $wp_query;
$pages = '';
$max = $wp_query->max_num_pages;
if (!$current = get_query_var('paged')) $current = 1;
$a['base'] = '?st=%#%'; // - С помощью этой строчки будем передавать номер страницы
$a['total'] = $max;
$a['current'] = $current;
$a['mid_size'] = 10; // - видимых ссылок слева и справа от текущей
$a['end_size'] = 10; // - видимых ссылок в начале и в конце
$a['prev_text'] = '«'; // - "Предыдущая"
$a['next_text'] = '»'; // - "Следующая"
if ($max > 1) echo '<div class="navigation">';
echo $pages . paginate_links($a);
if ($max > 1) echo '</div>';
}

Этот код выведет выше описанную функцию, собственно номера страниц, его вставляем в category.php:

<?php if (function_exists('pag_nav')) pag_nav(); ?>

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

<?php
$args = array(
'post_type' => 'post', // - какой тип постов
'paged' => $_GET['st'], // - Сюда мы ловим передаваемые страницы
'order' => 'DESC', // сортировка от новых к старым
);
query_posts( $args ); ?>

Вот и все, должно работать, но только работать, красоты вы не увидите, css стилей нет. Если не получится, пишите, будем разбираться.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *