Как вывести постраничную навигацию (пагинацию) в WordPress?

Шаблон писал полностью с нуля, версия движка 4.0
Есть страница с выводом всех новостей "news", вывожу записи вот так
<?php
	$postslist = get_posts('numberposts=4&order=DESC&category=news&orderby=date');
	foreach ($postslist as $post) :
	setup_postdata($post);
?>
<div>
// тут вывод шаблона записи и получение миниатюры в отдельный блок.
</div>
<?php endforeach; ?>


Пагинацию через стандартные методы не выводит, установил плагин wp_pagenavi, пробовал выводить через <?php wp_pagenavi(); ?>, но результат нулевой.

Вывод статей с помощью WP_Query не загружает страницу вообще. Мне кажется, корень зла все же в не правильной работе wp_quary функций.
  • Вопрос задан
  • 7121 просмотр
Решения вопроса 1
slowdream
@slowdream Автор вопроса
Проблема была в иерархи шаблонов страниц :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@andreyhead1
Расскажите, пожалуйста, как решили проблему? Сейчас столкнулся с такой же ситуацией
Ответ написан
Комментировать
andreybold
@andreybold
в файле functions.php вставляем вот эту функцию:
function mysite_pagenav($pages = '', $range = 2){
		$showitems = ($range * 2)+1;
		global $paged;
		if(empty($paged)) $paged = 1;
		if($pages == ''){
			global $wp_query;
			$pages = $wp_query->max_num_pages;
			if(!$pages){
				$pages = 1;
			}
		}
		if(1 != $pages){
			echo '<div class="page_nav">';
				if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo '<a class="first_nav" href="'.get_pagenum_link(1).'">&laquo;</a>';
				if($paged > 1 && $showitems < $pages) echo '<a class="prev_nav" href="'.get_pagenum_link($paged - 1).'">&lsaquo;</a>';
				for ($i=1; $i <= $pages; $i++){
					if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )){
						echo ($paged == $i)? '<span class="current">'.$i.'</span>':'<a href="'.get_pagenum_link($i).'" class="inactive" >'.$i.'</a>';
					}
				}
				if ($paged < $pages && $showitems < $pages) echo '<a class="next_nav" href="'.get_pagenum_link($paged + 1).'">&rsaquo;</a>';
				if ($paged < $pages-1 &&  $paged+$range-1 < $pages && $showitems < $pages) echo '<a class="last_nav" href="'.get_pagenum_link($pages).'">&raquo;</a>';
				echo "</div>\n";
		}
	}

а в index.php пишем вот это:
global $paged;
query_posts('&paged='.$paged);
if(have_posts()){
	while(have_posts()){// стандартный цикл вывода новостей
		the_post();
		// выводим новость
	}
}
wp_reset_query(); 
mysite_pagenav();//вызываем функцию для вставки навигации
?>

На 4.0 вордпрессе точно работает.
Ответ написан
XXX
@XXX
Решение где-то рядом
@slowdream есть удобный плагин для wp PageNavi, настройка оч простая, но если не разберетесь посмотрите гид в блоге wordpressplugins. Как сделать без плагинов смотрите здесь.
Ответ написан
@serg_bars
сам тоже бьюсь над такой проблемой- сам написал шаблон, но пагинация не хочет работать, подскажите решение?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы