Блог Понтика Максима

Создаем постраничную навигацию на блоге с плагином WP-PageNavi и без него

постраничная навигация wordpress

Привет мои уважаемые читатели! Я продолжаю серию полезных постов по настройке блога, сегодня вы узнаете, что такое постраничная навигация wordpress, и как она реализовывается с помощью плагина wp-pagenavi или без него.

Если вы только недавно открыли для себя путь блоггинга и в этом деле совсем новичок, могу сказать, что
движок wordpress
(на котором сделан и работает блог) имеет небольшой недостаток. Дело в том, что у него нет вывода списка всех страниц блога. В итоге пользователь может увидеть только такое количество анонсов постов, которое вы указали в настройках консоли вордпресс.

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

А если таких страниц со временем на блоге накопится 100 или 1000. Вот в таком случае нам поможет плагин постраничной навигации wp-pagenavi, который будет выводить в любом месте, где вы захотите вот такой список:

плагин постраничной навигации

или такой

плагин постраничной навигации wp-pagenavi

Вариантов может быть огромное множество, что захотите, то и сделаете под свою
тему оформления
блога.

Плагин постраничной навигации wordpress

Первым делом вам потребуется скачать плагин wp-pagenavi, для этого переходите по этой
ссылке
.  Затем устанавливаем данный плагин. Для этого переходим в админ панель wordpress, затем выбираем вкладку Плагины далее Добавить новый далее Загрузить далее Обзор далее Установить. Подробно про установку плагинов я писал
здесь
.

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

Добавьте следующий код:


<?php wp_pagenavi(); ?>

Во все файлы темы, где у вас будет выводиться постраничная навигация. У меня это главная страница (файл index.php), затем архивы (файл archive.php) и поиск по блогу (файл search.php).

Открываем данные файлы с помощью программы Notepad++ (или непосредственно из консоли wordpress Внешний вид Редактор Шаблоны), находим там примерно следующие строчки:

код для плагина1

Заменяем весь найденный код выше приведенным. В каждой теме могут быть небольшие отличия кода. Например, у моего подопытного блога над которым я провожу подобные эксперименты, стандартная постраничная навигация имела вот такой код:

код для плагина2

Внимательно изучив структуру, редактируемого файла, вы обязательно найдете что-то похожее. Точно, таким образом, замените код в файлах archive.php и search.php.

Теперь сохраняем изменения,
закачиваем файлы на хостинг
, перезагружаем страницу и смотрим полученный результат.

плагин wp-pagenavi постраничная навигация

Настройки плагина WP-PageNavi

Теперь давайте немного настроим вывод постраничной навигации. Для этого заходим в админ панель wordpress. Находим вкладку Параметры далее Список страниц.

плагин список страниц

Перед нами откроется окно с настройками плагина.

В поле «Шаблон общего списка страниц» я добавил слово Страница в итоге у меня выводится небольшое пояснение к текущей и общему количеству страниц.

постраничная навигация

В поля «Первая и последняя страница» вы можете задать название для заданных кнопок.

настройки плагина

В полях «Предыдущая и следующая страница» можно поменять такой элемент, как стрелочки для перехода на другую страницу.

настройки плагина-wp-pagenavi

Чуть ниже вы можете отредактировать стиль списка страниц (обычный или выпадающий). Указать диапазон и количество страниц, а так же задать коэффициент для диапазонов страниц.

Для самых продвинутых можно пойти еще дальше и попробовать изменить внешний вид постраничной навигации плагина wp-pagenavi. Для этого необходимо отредактировать файл pagenavi-css.css, который отвечает за вывод стилевого оформления.

Его адрес у меня такой:


/httpdocs/wp-content/plugins/wp-pagenavi/pagenavi-css.css

Экспериментируйте, и у вас обязательно все получится, только не забывайте делать резервные копии редактируемых файлов.

Если есть еще какие-то сомнения, обязательно посмотрите видео по установке и настройке данного плагина.

Постраничная навигация wordpress без плагина

Теперь давайте разберемся, как сделать постраничную навигацию wordpress без плагина. Для того, чтобы уменьшить нагрузку на базу данных и тем самым, такая постраничная навигация не влияла на скорость загрузки блога.

Если кто-то еще не знает, но в предыдущих постах, я рассказывал о том каким образом можно увеличить скорость загрузки блога. Прочтите эти статьи:
Оптимизация базы данных
и
Кэширование wordpress
.

Перед дальнейшими действиями хочу сразу сказать, что все коды php, которые вы будете вставлять в файл functions.php о чем речь пойдет ниже, я взял на блоге

http://alaev.info

, так как именно его результат работы я посчитал наиболее правильным и реально стоящим. Так как именно он добился того, что такая html постраничная навигация не будет содержать лишних дублей страниц и редиректов.

Итак приступим… Первым делом нам потребуется вставить в любое место (между тегами ) файла functions.php вот этот код:


/*** Альтернатива wp_pagenavi (без лишних обращений к данным) ***/function kama_pagenavi($before=», $after=», $echo=true) { /* ================ Настройки ================ */ $text_num_page = »; // текст для количества страниц. заменится текущей, а последней. Пример: ‘Страница из ‘ = Страница 4 из 60 $num_pages = 10; // сколько ссылок показывать $stepLink = 10; // после навигации ссылки с определенным шагом (значение = число (какой шаг) или », если не нужно показывать). Пример: 1,2,3…10,20,30 $dotright_text = ‘…’; // промежуточный текст &quot;до&quot;. $dotright_text2 = ‘…’; // промежуточный текст &quot;после&quot;. $backtext = ‘«’; // текст &quot;перейти на предыдущую страницу&quot;. Ставим », если эта ссылка не нужна. $nexttext = ‘»’; // текст &quot;перейти на следующую страницу&quot;. Ставим », если эта ссылка не нужна. $first_page_text = »; // текст &quot;к первой странице&quot; или ставим », если вместо текста нужно показать номер страницы. $last_page_text = »; // текст &quot;к последней странице&quot; или пишем », если вместо текста нужно показать номер страницы. /* ================ Конец Настроек ================ */ global $wp_query; $posts_per_page = (int) $wp_query->query_vars[posts_per_page]; $paged = (int) $wp_query->query_vars[paged]; $max_page = $wp_query->max_num_pages; if($max_page <= 1 ) return false; //проверка на надобность в навигации if(empty($paged) || $paged == 0) $paged = 1; $pages_to_show = intval($num_pages); $pages_to_show_minus_1 = $pages_to_show-1; $half_page_start = floor($pages_to_show_minus_1/2); //сколько ссылок до текущей страницы $half_page_end = ceil($pages_to_show_minus_1/2); //сколько ссылок после текущей страницы $start_page = $paged — $half_page_start; //первая страница $end_page = $paged + $half_page_end; //последняя страница (условно) if($start_page <= 0) $start_page = 1; if(($end_page — $start_page) != $pages_to_show_minus_1) $end_page = $start_page + $pages_to_show_minus_1; if($end_page > $max_page) { $start_page = $max_page — $pages_to_show_minus_1; $end_page = (int) $max_page; } if($start_page <= 0) $start_page = 1; $out=»; //выводим навигацию $out.= $before.&quot;<div class=’wp-pagenavi‘>n&quot;; if ($text_num_page){ $text_num_page = preg_replace (’!|!’,'%s’,$text_num_page); $out.= sprintf (&quot;<span class=’pages’>$text_num_page</span>&quot;,$paged,$max_page); } if ($start_page >= 2 && $pages_to_show < $max_page) { $out.= ‘<a href=&quot;’.rtrim(get_pagenum_link(), ‘/’).’&quot;>’. ($first_page_text?$first_page_text:1) .’</a>’; if($dotright_text && $start_page!=2) $out.= ‘<span>’.$dotright_text.’</span>’; } if ($backtext && $paged!=1) $out.= ‘<a href=&quot;’.rtrim(get_pagenum_link(($paged-1)), ‘/’).’&quot;>’.$backtext.’</a>’; for($i = $start_page; $i <= $end_page; $i++) { if($i == $paged) { $out.= ‘<span>’.$i.’</span>’; } else { $out.= ‘<a href=&quot;’.rtrim(get_pagenum_link($i), ‘/’).’&quot;>’.$i.’</a>’; } } if ($nexttext && $paged!=$end_page) $out.= ‘<a href=&quot;’.get_pagenum_link(($paged+1)).’&quot;>’.$nexttext.’</a>’; //ссылки с шагом if ($stepLink && $end_page < $max_page){ for($i=$end_page+1; $i<=$max_page; $i++) { if($i % $stepLink == 0 && $i!==$num_pages) { if (++$dd == 1) $out.= ‘<span>’.$dotright_text2.’</span>’; $out.= ‘<a href=&quot;’.get_pagenum_link($i).’&quot;>’.$i.’</a>’; } } } if ($end_page < $max_page) { if($dotright_text && $end_page!=($max_page-1)) $out.= ‘<span>’.$dotright_text2.’</span>’; $out.= ‘<a href=&quot;’.get_pagenum_link($max_page).’&quot;>’. ($last_page_text?$last_page_text:$max_page) .’</a>’; } $out.= &quot;</div>&quot;.$after.&quot;n&quot;; if ($echo) echo $out; else return $out;}

Затем во всех файлах, где будет осуществляться вывод постраничной навигации необходимо вставить код вместо предыдущего, отвечающего за вывод плагина wp-pagenavi.

Меняем в файлах index.php, archive.php и search.php код:


<?php wp_pagenavi(); ?>

на следующий


<?php if (function_exists(’kama_pagenavi‘)) kama_pagenavi(); ?>

На последнем этапе вам потребуется перенести все стили из плагина к себе в файл style.css. Для этого открываем файл плагина pagenavi-css.css, который расположен по адресу:


/httpdocs/wp-content/plugins/wp-pagenavi/pagenavi-css.css

И копируем оттуда к себе в файл style.css все стили. У меня они выглядят вот так:


.wp-pagenavi { clear: both; }.wp-pagenavi a, .wp-pagenavi span {text-decoration: none;border: 1px solid #BFBFBF;padding: 3px 5px;margin: 2px;}.wp-pagenavi a:hover, .wp-pagenavi span.current {border-color: #000;}.wp-pagenavi span.current {font-weight: bold;}

Теперь перезагружаем страницу и смотрим полученный результат.

Заключение.

Как вам реализовать постраничную навигацию wordpress на блоге смотрите сами. Лично когда я, только начинал заниматься блоггингом, было проще использовать плагин wp-pagenavi. Теперь, когда я уже набрался опыта и решил не создавать лишнюю нагрузку на базу данных, перешел на альтернативную замену ему, сделав постраничная навигация, html без плагина.

На этом у меня все! Пока!

Если понравилась статья
обязательно подпишись на обновление блога!

Смех продлевает жизнь!!! Смейтесь от души и до слез…

:)

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>