Как выводить не все таксономии на странице, а по три (как post_per_page)?
Помогите, пожалуйста, реализовать следующую задачу.
Создал свой тип записи, и свою таксономию, вывожу таксономии следующим образом:
`введите сюда код`<?php
$terms = get_terms( array(
'taxonomy' => array( 'post_tag', 'fitnescat' ),
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
) );
foreach ($terms as $term): ?>
<div><?php echo $term->name ?></div>
<div><?php echo $term->description ?></div>
<div>Уроков:<?php echo $term->count ?></div>
<h4><a href="<?php echo get_term_link( $term ) ?>">Подробнее</a></h4>
<?php endforeach; ?>
Все отрабатывает нормально, но нужно выводить не все таксономии на странице, а по три. Нужно сделать что-то типа post_per_page, однако в функции get_terms() так не получается.
Подскажите, пожалуйста, как можно реализовать данную задачу?
Ответы (2 шт):
Автор решения: Valerii Vasiliev
→ Ссылка
В get_terms есть параметры для этого number, offset
$per_page = 3;
$page = ( get_query_var('paged') ) ? get_query_var( 'paged' ) : 1;
$taxonomy = 'post_tag';
$offset = ( $page-1 ) * $per_page ;
$args = array( 'number' => $per_page ,
'offset' => $offset,
'taxonomy' => array( 'post_tag', 'fitnescat' ),
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true
);
$tax_terms = get_terms( $taxonomy, $args );
И пагинация для этого
$total_terms = wp_count_terms( array('taxonomy' => array( 'post_tag', 'fitnescat' ), 'hide_empty' => true) );
$pages = ceil($total_terms/$per_page);
// if there's more than one page
if( $pages > 1 ):
echo '<ul>';
for ($pagecount=1; $pagecount <= $pages; $pagecount++):
echo '<li><a href="'.get_permalink().'page/'.$pagecount.'/">'.$pagecount.'</a></li>';
endfor;
echo '</ul>';
// link to show all
echo '<a href="'.get_permalink().'">show all</a>';
endif;
Автор решения: Darth KYL
→ Ссылка
вывод таксономий постранично
$tax_per_page = 3;
$offset = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;
$offset = ( $offset - 1 ) * $tax_per_page;
$args = [
'taxonomy' => [ 'post_tag', 'fitnescat' ],
'order' => 'ASC',
'hide_empty' => true,
'hierarchical' => true,
'number' => $tax_per_page,
'offset' => $offset
];
$terms = get_terms( $args );
вывод пагинации для таксономий используя функционал wp для построения ссылок
$terms_count = get_terms(
[
'taxonomy' => [ 'post_tag', 'fitnescat' ],
'order' => 'ASC',
'hide_empty' => true,
]
);
$terms_count = count( $terms_count );
$big = 999999999;
$args = [
'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
'format' => '',
'current' => max( 1, get_query_var('paged') ),
'total' => ceil( $terms_count / $tax_per_page ),
];
$result = paginate_links( $args );
echo $result;