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

Без плагина WordSmall

На каждом сайте имеется постраничная навигация она служит для разбивки страниц и удобства перемещения по ним. Во многих темах WordPress изначально присутствует стандартная навигация (Следующая страница, Предыдущая страница) это довольно устаревший способ разбивки страниц. Есть другой вариант — использовать специальные плагины (к примеру, WP-PageNavi). Но зачем устанавливать лишний плагин, когда можно воспользоваться встроенной функцией WordPress paginate_links(). Она отлично справляется со своей работой и очень легко устанавливается.

Установка.

1-й шаг.

Откройте файл functions.php и в конце перед знаком ?> добавьте следующий фрагмент кода.

function paginate() {
        global $wp_query, $wp_rewrite;
        $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
        
        $pagination = array(
                'base' => @add_query_arg('page','%#%'),
                'format' => '',
                'total' => $wp_query->max_num_pages,
                'current' => $current,
                'show_all' => False,
                'type' => 'list',
                'next_text' => 'Далее',
                'prev_text' => 'Назад'
                );
        
        if( $wp_rewrite->using_permalinks() )
                $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );
        
        if( !empty($wp_query->query_vars['s']) )
                $pagination['add_args'] = array( 's' => get_query_var( 's' ) );
        
        echo paginate_links( $pagination );
}

2-й шаг.

Добавляем стили для постраничной навигации открываем файл style.css и прописываем стили.

/* Pagination */        
        
ul.page-numbers {
        margin: 20px 0 10px;
        width: 100%;
        padding: 0;
        font: bold 15px monospace;
        line-height: normal;
        clear: both;
        float: left;
        }

    ul.page-numbers li {
            float: left;
                list-style-type:none;
            }

ul.page-numbers a,
ul.page-numbers span {
        border-radius: 3px;
        -moz-border-radius: 3px;
        -webkit-border-radius: 3px;
        background:#fff;
        box-shadow: 0 0 2px #737373;
        padding: 3px 7px 2px;
        margin: 2px;
        text-decoration: none;
        color: #F15F5F;
        }
ul.page-numbers a:hover,
ul.page-numbers span.current {        
        background: #F15F5F;
        color: #fff;
        }

3-й шаг.

Выводим навигацию для этого нужно в файле index.php, archive.php, search.php добавить код.

<?php paginate(); ?>

Куда именно добавить? Туда где хотите видеть навигацию поэтому определяйтесь сами.

Результат.

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

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

Больше информации о функции можете узнать в кодексе: codex.wordpress.org/Function_Reference/paginate_links

Источник: Bavotasan.com

Автор, он же Андрей, он же Admin, он же WordSmall

Лентяй-любитель, окончил высшую школу безделья с многочисленными знаками отличия. Создатель этого небольшого «чудо-блога» о еще более «чудном» контенте.

E-mail Google+ Twitter
Комментариев: 4
  • Юлия

    Спасибо большое! Вы мне очень помогли, это то, что мне было нужно, так как плагины навигации не работали с моей темой. Теперь всё получилось! А как же убрать стандартную навигацию? А то теперь у меня двойная навигация на сайте

    • Андрей

      Не за что! Всегда рад помочь! А чтобы убрать стандартную навигацию, то поищите в файлах: index.php, archive.php, search.php вывод стандартной нав. Выглядит примерно так: <?php twentythirteen_paging_nav(); ?> это из темы twentythirteen. Если сами не сможете найти, то скажите какая у вас тема, и я помогу найти.

      • Юлия

        Нашла в своей теме такие строчки удалила. Работает. Еще раз благодарю Вас, Андрей! Только Вы мне помогли! З.Ы. Извините за предыдущий комментарий, ребенок подтолкнул)

      • Андрей

        Ничего страшного) Обращайтесь, всегда рад буду помочь)

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