Здравствуйте, дорогие друзья и читатели – Sozdaiblog.ru!
Тема сегодняшней статьи постраничная навигация WordPress.
Некоторое время назад, мы с Вами уже обсуждали похожую тему.
В ней я описывал замечательный плагин – «WP-PageNavi», который реализовывал удобную и простую постраничную навигацию в WordPress.
Да, плагин действительно хорош, но его присутствие, это ещё одна нагрузка на Ваш ресурс.
Поэтому избавление от лишнего плагина, поможет нам сделать ещё один шаг к увеличению скорости загрузки сайта.
Взамен плагину мы создадим постраничную навигацию php кодом.
Для реализации постраничной навигации 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(' | ', __('« Previous page','chocolate'), __('Next page »','chocolate')); ?> </div> <?php } } ?>
Он, как раз находится после той строчки.
Просто замените его на свой.
Статья получилась короткая, но очень полезная.
Расскажите, а как у Вас реализована в WordPress постраничная навигация?
На сегодня всё, а впереди Вас ждёт куча новой и полезной информации, не пропустите.
С уважением, Денис Черников!
Здравствуйте. Давно хотела этим заняться, даже начала искать информацию. А тут подарочек…
Столько привлекательных плагинов, многие хочется установить.
А если есть возможность обойтись без плагина, надо обязательно этим воспользоваться.
Здравствуйте,Ольга! Конечно, без плагинов ваш движок будет не так сильно нагружаться, а значит мы будем впереди планеты всей!
Во я загнул!)
У меня PageNavi стоит, но теперь буду менять на Ваш код Стараюсь свести к минимуму количество плагинов.
Замечательно, Анастасия! Если что, стучите!
Денис, привет!!!
Вроде и действовал по твоим указаниям, но выносит блог постоянно…
Может ли проблема быть связана с темой блога?
Коды не воспринимает совсем…:)
Привет, Алексей!
Думаю тема не при чём, код отлично работает!
Денис, коды с твоего сайта взять трудно, скорее всего код скопирован был неправильно, отсюда блог выносит.
Как трудно! Всё нормально копируется, просто при копировании пропадает выделение того что вы копируете, а в буфере обмена всё есть! Сам проверял!
Пока пользуюсь плагином, возможно поменяю на код.
Да я сам, долго тянул, но желание совершенства взяло верх!)
это необходимо делать обязательно
А то!)
Денис, а навигация отображаться будет так как на вашем блоге?
Да, как у меня, но можно немного подстроить на свой вкус!
Это навигация как у вас на сайте? Такая же резиновая? Или тоже простая постраничная?
У меня не постраничная навигация, а бесконечная прокрутка страниц (по другому — СКРОЛЛИНГ). А в этой статье речь идёт именно о постраничной.
Вот это меня и заинтересовало!
Денис, как сделать такой сколлинг?
Об этом у меня есть статья, посмотри в карте.
Спасибо за код, у меня сразу получилось, хоть я вообще мало еще понимаю в таких вещах. Единственное, хотелось чтоб цифры были немного побольше, заметнее что ли… Может заглянете и посоветуете что-то? Спасибочки!
Пожалуйста, Юлия! Размер, можно изменить в стилях CSS!
Здравствуйте, Денис. Я новичок в WP, попросили помочь. На сайте интернет-магазина в каталоге товара (jigoshop) есть постраничный вывод, но там указывается только «Следующая» и «Предыдущая» страница, а хотелось бы чтобы указывалось и количество страниц и была выделена текущая. Где это найти и что сделать?
Заранее спасибо.
Здравствуйте, Вера!А статья разве не об этом?
Здравствуйте, Денис.
Спасибо за фикс, хотел написать свою функцию, но лень — как известно, двигатель прогресса решил посмотреть что есть из сорса в сети, и таким образом наткнулся на ваш пост.
Не люблю ставить плагины, там где можно обойтись простым хаком (расширением) функционала, за счет файла functions темы, тем самым снизить лишний раз нагрузку на движок от плагинов.
Единственное что бы я добавил, вернее перенес, проверку на определение функции «function_exists» в сам файл functions:
if ( ! function_exists ( 'navigation' ) ) :
function navigation ( $html_id ) {
}
endif;
Ещё добавил бы опцию, через которую можно задать индивидуальный css класс/ или id для каждого вывода постраничной навигации
function navigation ( $html_id )
и вставил бы её в блок.
echo '';
а использовал бы как/то так navigation ( 'название css класс' );
Но это мои предпочтения.
ps: название функции я тоже поменял под себя.
У меня всё руки не доходят для добавления определения классам. Да и как-то без этого нормально работало. Но на будущее учтём.
Доброго дня
У меня в теме вот так сделана навигация:
Я когда пытаюсь вместо этой навигации вставить код с вашего сайта — у меня страница вообще не открывается — белый экран
Используйте тогда другой способ.
ПРивет. Спасибо за радикальное решение! Скажите пожалуйста, как я могу стилизовать эту пагинацию средствами цсс? Как мне разметить текущий код?
Пожалуйста! CSS я не пробовал тут реализовать, да и зачем, если и так всё отлично работает!
Попросту у меня вот такая пагинация http: //s16.postimg.org/jtax4zgat/pavenavi.jpg, мучениям конца и света нет, может подскажете что подставить куда?
Вы можете нормально выразиться, что Вы хотите?
Я вроде бы очень конкретно выразил свою цель Уже сам сверстал, если кому понадобится пагинация такого вида, пишите в комментах майл, сброшу файлы.
Спасибо автору. К статье нужно добавить дополнение про css классы, что бы было сразу понятно что прописывать в каскадную таблицу стилей.
Здесь невозможно дать универсальное решении для CSS, ведь все шаблоны разные!
Можно. Я же дал. вот посмотрите http: //neznkamomka.by и можно хоть кнопками сделать, хоть ромбиками.
Если так, то хорошо, но мы друг друга немного не поняли!
Здравствуйте! Подскажите как сделать такой вариант:
«<>» , без цифр между ссылками?
Спасибо!
Уберите строки отвечающие за вывод количества страниц!
Денис, спасибо за быстрый ответ. Удалить строчки из Вашего кода(если да, то пожалуйста скопируйте из статьи — какие именно) или из файла темы? Спасибо!
Пожалуйста, Дмитрий!
Удалить из моего кода, они подписаны все, это видно!
Спасибо за помощь, но удаление строк приводит к кривому отображению страниц или исчезанию ссылок навигации.
Удачи! Отличный сайт. Узнал много нового!
Немного не по теме, подходящей просто не нашёл, но у меня такой вопрос. В настройках чтения сайта у меня отмечен пункт «Анонс», я так понимаю, что этот пункт отвечает за то, что при написании новой записи, на главной странице, должен появиться анонс записи, а у меня появляется вся запись целиком, а хотелось бы, что бы появлялся именно анонс, т. е. часть записи со ссылкой на остальную запись.
Денис, помогите пожалуйста, как добиться именно анонса?
Спасибо.
При редактировании записи в редакторе нужно ставить тег «more», он там в настройках редактора на панели инструментов, где цвет, заголовки и всё остальное. Ставьте в нужное место статьи и он отрежет ту часть которая должна быть в анонсе!
А как же стили ? все работает но хотелось бы настроить стили, если не затруднит выложи код со стилями которые прописаны у тебя.
Да Вы просто через Фаербаг откройте и посмотрите!