Пагинация для терминов

Рубрики Общее

Этот пример поможет разбить на страницы список категорий или меток.

Термины таксономии получаем с помощью функции get_terms.

Пример кода, который выводит список брендов

$args = array(
 'taxonomy' => 'brand',
 'hide_empty' => true,
 'orderby' => 'count', 
 'order' => 'desc',
 'number' => $count_page_brand,
 'offset' => $offset, 
);
$termbb = get_terms( $args );
foreach($termbb as $termsbb) { 
echo $termsbb->name; 
}

Тут есть два нужных параметра
number — количество выводимых терминов
offset — смещение, те то что и нужно для пагинации.

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

$args2 = array(
'taxonomy' => 'brand',
'hide_empty' => true,
);
$termc = get_terms( $args2 );
$all_brands = count($termc);//количество брендов всего
$count_page_brand = '10'; //количество брендов на страницу
$count_pagenate = ($all_brands/$count_page_brand); //количество страниц пагинации
$in_page = $_GET['page-brand']; //текущая страница пагинации
if($in_page) {
$offset = ($in_page*$count_page_brand)-$count_page_brand; //смещение
} else {
$offset = 0; 
}

И далее в самый низ вставляете этот код, для вывода ссылок:

for ($i = 1; $i < $count_pagenate; $i++){
if($i==1) {
if(!($in_page)) {
echo '<span class="current">'.$i.'</span>';
} else {
echo '<a href="http://сайт.ru/katalog-mebelnyx-fabrik/" class="inactive" >'.$i.'</a>';
}
} else {
if($i == $in_page) {
echo '<span class="current">'.$i.'</span>';
} else {
echo '<a href="http://сайт.ru/katalog-mebelnyx-fabrik/?page-brand='.$i.'" class="inactive" >'.$i.'</a>';
}
}
}

Если количество категорий не будет меняться, то вот эту часть кода можно не использовать

$args2 = array(
'taxonomy' => 'brand',
'hide_empty' => true,
);
$termc = get_terms( $args2 );
$all_brands = count($termc);//количество брендов всего

а сразу указать $all_brands = 99;//количество брендов всего

Количество категорий/терминов