Шаблон для произвольной таксономии с отображением родительских терминов и пагинацией
Подскажите где почитать.
Есть иерархическая таксономия
CHARACTERS:
- Столоны
пост 1
пост 2 - Шварценеггер
пост 1
пост 2 - Джоли
пост 1
пост 2
Как вывести страницу по URL
https://site.com/characters/
где отобразятся только Столоны, Шварценеггер и Джоли?
1 первое конечно создал
taxonomy-characters.php
2 сейчас юзаю
$terms = get_terms( [
'taxonomy' => 'characters',
'hide_empty' => false,
] );
$page = isset( $_GET['cpage'] ) ? abs( (int) $_GET['cpage'] ) : 1; // имя страницы пагинации
$numOfItems = 12; // количество постов на странице
$to = $page * $numOfItems; // посты до ($page) -это номер текущей умножена на ($numOfItems)-количество постов на странице
$current = $to - $numOfItems; // посты от
$total = sizeof($terms ); // всего
$i = 0;
// собираем их и выводим
for ( $i=$current; $i<$to; $i++) {
$category = $terms[$i];
echo $category->name ;
echo "<br>";
}
?>
<div class="post-nav">
<div class="navigation">
<?php
unset($category);
echo $output = paginate_links( array(
'base' => add_query_arg( 'cpage', '%#%' ),
'format' => '',
'prev_text' => __('«'),
'next_text' => __('»'),
'total' => ceil($total / $numOfItems),
'current' => $page
));
?>
</div>
</div>
<?php
или так для альтернативной url пагинации
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$numOfItems = 16; // количество постов на странице
$to = $paged * $numOfItems; // посты до ($page) -это номер текущей умножена на ($numOfItems)-количество постов на странице
$current = $to - $numOfItems; // посты от
$total = sizeof($terms ); // всего
// собираем их и выводим
for ( $i=$current; $i<$to; $i++) {
$category = $terms[$i];
echo $category->name ;
echo "<br>";
}
?>
<div class="post-nav">
<div class="navigation">
<?php
unset($category);
global $wp_query;
echo $output = paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'prev_text' => __('«'),
'next_text' => __('»'),
'total' => ceil($total / $numOfItems),
'current' => $page
));
?>
</div>
</div>
<?php
может есть что-то по элегантнее ??
Если речь о рубриках и метках..
register_taxonomy( 'characters_cat', 'characters', array( 'labels' => array( 'name' => 'characters_cat' ), 'public' => true, 'show_in_nav_menus' => false, 'show_ui' => true, 'hierarchical' => true, 'show_admin_column' => true, 'rewrite' => array( 'hierarchical' => true ), 'has_archive' => true ) ); register_taxonomy( 'characters_tag', 'characters', array( 'labels' => array( 'name' => 'characters_tag' ), 'public' => true, 'show_in_nav_menus' => false, 'show_ui' => true, 'show_tagcloud' => true, 'show_admin_column' => true, 'has_archive' => false ) ); register_post_type('characters', array( 'labels' => array( 'name' => 'characters' ), 'public' => true, 'supports' => array( 'title', 'editor', 'thumbnail', 'comments', 'custom-fields'), 'has_archive' => true, 'taxonomies' => array( 'characters_cat', 'characters_tag' ) ) );