WordPress Bootstrap 4 пагинация

Возникла необходимость создания сайта на wordpress с использованием bootstrap 4. Нашел более менее подходящий шаблон, но с пагинацией там была беда, стал вопрос — как сделать пагинацию, используя bootstrap 4? Поиск дал готовое решение, немного поправил под себя. Эту функцию добавляем в functions.php шаблона:

function bootstrap_pagination( \WP_Query $wp_query = null, $echo = true ) {
    if ( null === $wp_query ) {
        global $wp_query;
    }
    $pages = paginate_links( [
            'base'         => str_replace( 999999999, '%#%', esc_url( get_pagenum_link( 999999999 ) ) ),
            'format'       => '?paged=%#%',
            'current'      => max( 1, get_query_var( 'paged' ) ),
            'total'        => $wp_query->max_num_pages,
            'type'         => 'array',
            'show_all'     => false,
            'end_size'     => 3,
            'mid_size'     => 1,
            'prev_next'    => true,
            'prev_text'    => __( '«' ),
            'next_text'    => __( '»' ),
            'add_args'     => false,
            'add_fragment' => ''
        ]
    );
    if ( is_array( $pages ) ) {
        $pagination = '<div class="pagination mb-5 mt-5"><ul class="pagination">';
        foreach ($pages as $page) {
            $pagination .= '<li class="page-item' . (strpos($page, 'current') !== false ? ' active' : '') . '"> ' . str_replace('page-numbers', 'page-link', $page) . '</li>';
        }
        $pagination .= '</ul></div>';
        if ( $echo ) {
            echo $pagination;
        } else {
            return $pagination;
        }
    }
    return null;
}

А уже в самом шаблоне (например в файле archive.php) показываем пагинацию, заменив the_posts_navigation(); на bootstrap_pagination();

This entry was posted in Wordpress and tagged , . Bookmark the permalink.

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

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

*