ГлавнаяВёрстка WordPress › Постраничная навигация в WordPress без плагина!


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


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

Здравствуйте, дорогие друзья и читатели – Sozdaiblog.ru!

Тема сегодняшней статьи постраничная навигация WordPress.

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

В ней я описывал замечательный плагин – «WP-PageNavi», который реализовывал удобную и простую постраничную навигацию в WordPress.

Да, плагин действительно хорош, но его присутствие, это ещё одна нагрузка на Ваш ресурс.

Поэтому избавление от лишнего плагина, поможет нам сделать ещё один шаг к увеличению скорости загрузки сайта.

Взамен плагину мы создадим постраничную навигацию php кодом.

 

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

Для реализации постраничной навигации WordPress без плагина, нам потребуется следующий код:

 


// Постраничная навигация
function wp_corenavi() {
  global $wp_query, $wp_rewrite;
  $pages = '';
  $max = $wp_query->max_num_pages;
  if (!$current = get_query_var('paged')) $current = 1;
  $a['base'] = str_replace(999999999, '%#%', get_pagenum_link(999999999));
  $a['total'] = $max;
  $a['current'] = $current;

  $total = 1; //1 - выводить текст "Страница N из N", 0 - не выводить
  $a['mid_size'] = 3; //сколько ссылок показывать слева и справа от текущей
  $a['end_size'] = 1; //сколько ссылок показывать в начале и в конце
  $a['prev_text'] = '«'; //текст ссылки "Предыдущая страница"
  $a['next_text'] = '»'; //текст ссылки "Следующая страница"

  if ($max > 1) echo '<div class="navigation">';
  if ($total == 1 && $max > 1) $pages = '<span class="pages">Страница ' . $current . ' из ' . $max . '</span>'."\r\n";
  echo $pages . paginate_links($a);
  if ($max > 1) echo '</div>';
}
// Постраничная навигация

 

Его нужно установить в файл – «functions.php», который находится в папке Вашей активной темы оформления.

Перед тем, как делать изменения в этом файле, обязательно сделайте бэкап Вашего ресурса.

Внутри кода Вы сможете найти настройки, которые помогут изменить некоторые функции вывода навигации.

Далее, скопируйте следующий код и вставьте его в то место, где Вы хотите, чтобы отображалась постраничная навигация:

 

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

 

Обычно, постраничную навигацию вордпресс выводят на главной странице. Для этого второй код нужно вставить в файл – «index.php», Вашей темы оформления.

Ещё, было-бы неплохо вывести постраничную навигацию php, в Ваших рубриках.

Чтобы это реализовать, нужно тот же код вставить в файл – «archive.php».

Для корректного отображения навигации, нужно вставлять вышеупомянутый код после строчки – «<?php endif; ?>».

Единственное, что мне постоянно мешало с реализацией постраничной навигации WordPress без плагина, так это стандартная навигация, которая есть во всех движках после версии 2.5.

За её вывод отвечает следующий кусок кода:

 

<?php
if(function_exists('wp_pagenavi')) { ?>
	<div id="pagination">
	<?php wp_pagenavi(); ?>
	</div>
<?php } else {
global $wp_query;
$total_pages = $wp_query->max_num_pages;
if ( $total_pages > 1 ) { ?>
	<div id="pagination">
		<?php posts_nav_link(' | ', __('&laquo; Previous page','chocolate'), __('Next page &raquo;','chocolate')); ?>
	</div>
<?php }
} ?>

 

Он, как раз находится после той строчки.

Просто замените его на свой.

Статья получилась короткая, но очень полезная.

Расскажите, а как у Вас реализована в WordPress постраничная навигация?

На сегодня всё, а впереди Вас ждёт куча новой и полезной информации, не пропустите.

 

С уважением, Денис Черников!




Сделайте, пожалуйста, доброе дело, расскажите о блоге своим друзьям:




43 комментарияА что думаете Вы?

  1. Ольга

    Здравствуйте. Давно хотела этим заняться, даже начала искать информацию. А тут подарочек...

    Столько привлекательных плагинов, многие хочется установить.

    А если есть возможность обойтись без плагина, надо обязательно этим воспользоваться.

    [Ответить]

    Денис Черников ответил:

    Здравствуйте,Ольга! Конечно, без плагинов ваш движок будет не так сильно нагружаться, а значит мы будем впереди планеты всей!

    Во я загнул!)

    [Ответить]

  2. Анастасия

    У меня PageNavi стоит, но теперь буду менять на Ваш код :) Стараюсь свести к минимуму количество плагинов.

    [Ответить]

    Денис Черников ответил:

    Замечательно, Анастасия! Если что, стучите!

    [Ответить]

  3. Алексей

    Денис, привет!!!

    Вроде и действовал по твоим указаниям, но выносит блог постоянно...

    Может ли проблема быть связана с темой блога?

    Коды не воспринимает совсем...:)

    [Ответить]

    Денис Черников ответил:

    Привет, Алексей!

    Думаю тема не при чём, код отлично работает!

    [Ответить]

  4. Александр

    Денис, коды с твоего сайта взять трудно, скорее всего код скопирован был неправильно, отсюда блог выносит.

    [Ответить]

    Денис Черников ответил:

    Как трудно! Всё нормально копируется, просто при копировании пропадает выделение того что вы копируете, а в буфере обмена всё есть! Сам проверял!

    [Ответить]

  5. Олег

    Пока пользуюсь плагином, возможно поменяю на код.

    [Ответить]

    Денис Черников ответил:

    Да я сам, долго тянул, но желание совершенства взяло верх!)

    [Ответить]

  6. Андрей

    это необходимо делать обязательно

    [Ответить]

    Денис Черников ответил:

    А то!)

    [Ответить]

  7. Василий

    Денис, а навигация отображаться будет так как на вашем блоге?

    [Ответить]

    Денис Черников ответил:

    Да, как у меня, но можно немного подстроить на свой вкус!

    [Ответить]

  8. Андрей

    Это навигация как у вас на сайте? Такая же резиновая? Или тоже простая постраничная?

    [Ответить]

    Денис Черников ответил:

    У меня не постраничная навигация, а бесконечная прокрутка страниц (по другому — СКРОЛЛИНГ). А в этой статье речь идёт именно о постраничной.

    [Ответить]

    Сергей Медведев ответил:

    Вот это меня и заинтересовало! :)

    Денис, как сделать такой сколлинг?

    [Ответить]

    Денис Черников ответил:

    Об этом у меня есть статья, посмотри в карте.

    [Ответить]

  9. Юлия

    Спасибо за код, у меня сразу получилось, хоть я вообще мало еще понимаю в таких вещах. Единственное, хотелось чтоб цифры были немного побольше, заметнее что ли... Может заглянете и посоветуете что-то? Спасибочки!

    [Ответить]

    Денис Черников ответил:

    Пожалуйста, Юлия! Размер, можно изменить в стилях CSS!

    [Ответить]

  10. Вера

    Здравствуйте, Денис. Я новичок в WP, попросили помочь. На сайте интернет-магазина в каталоге товара (jigoshop) есть постраничный вывод, но там указывается только «Следующая» и «Предыдущая» страница, а хотелось бы чтобы указывалось и количество страниц и была выделена текущая. Где это найти и что сделать?

    Заранее спасибо.

    [Ответить]

    Денис Черников ответил:

    Здравствуйте, Вера!А статья разве не об этом?

    [Ответить]

  11. MAKAVE

    Здравствуйте, Денис.

    Спасибо за фикс, хотел написать свою функцию, но лень — как известно, двигатель прогресса :) решил посмотреть что есть из сорса в сети, и таким образом наткнулся на ваш пост.

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

    Единственное что бы я добавил, вернее перенес, проверку на определение функции «function_exists» в сам файл functions:

    if ( ! function_exists ( 'navigation' ) ) :

    function navigation ( $html_id ) {

    }

    endif;

    Ещё добавил бы опцию, через которую можно задать индивидуальный css класс/ или id для каждого вывода постраничной навигации

    function navigation ( $html_id )

    и вставил бы её в блок.

    echo '';

    а использовал бы как/то так navigation ( 'название css класс' );

    Но это мои предпочтения.

    ps: название функции я тоже поменял под себя.

    [Ответить]

    Денис Черников ответил:

    У меня всё руки не доходят для добавления определения классам. Да и как-то без этого нормально работало. Но на будущее учтём.

    [Ответить]

  12. Дмитрий

    Доброго дня

    У меня в теме вот так сделана навигация:

    Я когда пытаюсь вместо этой навигации вставить код с вашего сайта — у меня страница вообще не открывается — белый экран

    [Ответить]

    Денис Черников ответил:

    Используйте тогда другой способ.

    [Ответить]

  13. Сумрачек

    ПРивет. Спасибо за радикальное решение! Скажите пожалуйста, как я могу стилизовать эту пагинацию средствами цсс? Как мне разметить текущий код?

    [Ответить]

    Денис Черников ответил:

    Пожалуйста! CSS я не пробовал тут реализовать, да и зачем, если и так всё отлично работает!

    [Ответить]

    Сумрачек ответил:

    Попросту у меня вот такая пагинация http: //s16.postimg.org/jtax4zgat/pavenavi.jpg, мучениям конца и света нет, может подскажете что подставить куда?

    [Ответить]

    Денис Черников ответил:

    Вы можете нормально выразиться, что Вы хотите?

    [Ответить]

  14. Сумрачек

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

    Спасибо автору. К статье нужно добавить дополнение про css классы, что бы было сразу понятно что прописывать в каскадную таблицу стилей.

    [Ответить]

    Денис Черников ответил:

    Здесь невозможно дать универсальное решении для CSS, ведь все шаблоны разные!

    [Ответить]

  15. Сумрачек

    Можно. Я же дал. вот посмотрите http: //neznkamomka.by и можно хоть кнопками сделать, хоть ромбиками.

    [Ответить]

    Денис Черников ответил:

    Если так, то хорошо, но мы друг друга немного не поняли!

    [Ответить]

  16. Дмитрий

    Здравствуйте! Подскажите как сделать такой вариант:

    «<>» , без цифр между ссылками?

    Спасибо!

    [Ответить]

    Денис Черников ответил:

    Уберите строки отвечающие за вывод количества страниц!

    [Ответить]

    Дмитрий ответил:

    Денис, спасибо за быстрый ответ. Удалить строчки из Вашего кода(если да, то пожалуйста скопируйте из статьи — какие именно) или из файла темы? Спасибо!

    [Ответить]

    Денис Черников ответил:

    Пожалуйста, Дмитрий!

    Удалить из моего кода, они подписаны все, это видно!

    [Ответить]

    Дмитрий ответил:

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

    Удачи! Отличный сайт. Узнал много нового!

  17. Евгений

    Немного не по теме, подходящей просто не нашёл, но у меня такой вопрос. В настройках чтения сайта у меня отмечен пункт «Анонс», я так понимаю, что этот пункт отвечает за то, что при написании новой записи, на главной странице, должен появиться анонс записи, а у меня появляется вся запись целиком, а хотелось бы, что бы появлялся именно анонс, т. е. часть записи со ссылкой на остальную запись.

    Денис, помогите пожалуйста, как добиться именно анонса?

    Спасибо.

    [Ответить]

    Денис Черников ответил:

    При редактировании записи в редакторе нужно ставить тег «more», он там в настройках редактора на панели инструментов, где цвет, заголовки и всё остальное. Ставьте в нужное место статьи и он отрежет ту часть которая должна быть в анонсе!

    [Ответить]

  18. андрей

    А как же стили ? все работает но хотелось бы настроить стили, если не затруднит выложи код со стилями которые прописаны у тебя.

    [Ответить]

    Денис Черников ответил:

    Да Вы просто через Фаербаг откройте и посмотрите!

    [Ответить]

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

Вверх