Вывод списка рубрик постранично
Приветствую!
Возможно ли на Вордпресс вывести список рубрик (или список любой другой таксономии), разбив его на несколько страниц, с постраничной навигацией?
Приветствую!
Возможно ли на Вордпресс вывести список рубрик (или список любой другой таксономии), разбив его на несколько страниц, с постраничной навигацией?
Готовой функции для такого функционала нет.
Но если захотеть, то можно самому реализовать.
Нужно смотреть в сторону "постраничная навигация на PHP".
Решение простым не будет, и Вы скорее всего откажитесь от этой идеи.
Читайте ответ от Kama
Готового решения нет. Но так сделать можно и не очень сложно. Для этого вам понадобятся:
get_terms() - получаете рубрики и выводите их списком, указываете параметр
offsetдинамически, чтобы была пагинация...Хотелось бы статью по этому поводу. Целый день потратил, не нашел, ни у нас, ни в англоязычном интернете. Хотя намеки есть, но они не работают.
Мой вариант, если есть баги, то Прошу поправить
Заранее Благодарен!
<div class="container"> <div class="row d-flex justify-content-center" id="middle_cat"> <?php $current_page_cat = !empty( $_GET['categories'] ) ? $_GET['categories'] : 1; //Определяем текущую страницу $exclude = 1; //Определяем какую рубрику не выводить (по id) $count_terms = wp_count_terms( 'category', array( 'hide_empty' => 0, 'exclude' => $exclude ) ); //Получаем общее количество выводимых рубрик //Определяем как динамически добавлять offset в аргументы get_categories($args). for ($i = 1; $i < $current_page_cat; $i++){ $offset += 4; }//То есть, при изменении на 1 значения текущей страницы ($current_page_cat) во время пагинации, увеличиваем на 4 значение offset для соответствующего аргумента get_categories($args). $offset = ($current_page_cat == 1) ? 0 : $offset; //$offset, который после двоеточия берёт динамическое значение из вышеприведённого цикла. $args = array( 'taxonomy' => 'category', 'exclude' => $exclude, 'offset' => $offset, 'number' => 4, 'order' => 'ASC', 'hide_empty' => false, ); $categories = get_categories($args); if ( $count_terms > 0 ){ foreach ( $categories as $category ) { $item = '<div class="col-md-4 col-lg-3 text-center">'; $item .= '<div class="practice-area bg-white ftco-animate p-4">'; $item .= '<div class="icon category-id-' . $category->term_id . ' d-flex justify-content-center align-items-center">'; $item .= '<span></span>'; $item .= '</div>'; $item .= '<h3 class="mb-3">'; $item .= '<a href="' . get_term_link( $category ) . '">' . $category->name . '</a>' ; $item .= '</h3>'; $item .= '<p>' . $category->category_description . '</p>'; $item .= '</div>'; $item .= '</div>'; echo $item; } } ?> </div> <div class="row mt-5"> <div class="col text-center"> <div class="block-27"> <?php // Функция пагинации ничего не возвращает, если всего 1 страница списка рубрик echo paginate_links( array( 'base' => site_url() . '/categories' . '%_%' . '#middle_cat', 'format' => '?categories=%#%' , 'total' => ceil($count_terms/4), //Количество страниц для пагинации получаем путём округления в большую сторону результата деления общего количества выводимых категорий на количество категорий отображаемых на одной странице. 'current' => $current_page_cat, 'show_all' => true, 'type' => 'list', 'prev_next' => true, 'prev_text' => '<', 'next_text' => '>', ) ); ?> </div> </div> </div> </div>