You could create a custom page template file tpl_list.php
with the following code:
<?php
/**
* Template Name: Paginated list of terms for a custom taxonomy
*
*/
// Edit:
$taxonomy = 'prints_cat';
$number = 3; // number of terms to display per page
// Setup:
$page = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$offset = ( $page > 0 ) ? $number * ( $page - 1 ) : 1;
$totalterms = wp_count_terms( $taxonomy, array( 'hide_empty' => TRUE ) );
$totalpages = ceil( $totalterms / $number );
// Debug:
// printf( 'taxonomy: %s - number: %s - page: %s - offset: %s - totalterms %s - totalpages: %s' , $taxonomy, $number, $page, $offset, $totalterms, $totalpages );
// Here I list all the available paramters to get_terms():
$args = array(
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => true,
'exclude' => array(),
'exclude_tree' => array(),
'include' => array(),
'number' => $number,
'fields' => 'all',
'slug' => '',
'parent' => '',
'hierarchical' => true,
'child_of' => 0,
'get' => '',
'name__like' => '',
'pad_counts' => false,
'offset' => $offset,
'search' => '',
'cache_domain' => 'core'
);
$terms = get_terms( $taxonomy, $args );
foreach ( $terms as $term )
{
printf( '<div class="cat-preview"><h2><a href="%s">%s</a></h2></div>',
get_term_link($term->slug, 'country'),
$term->name,
$term->name
);
}
// Show custom page navigation
printf( '<nav class="pagination">%s</nav>',
custom_page_navi( $totalpages, $page, 3, 0 )
);
where
function custom_page_navi( $totalpages, $page, $end_size, $mid_size )
{
$bignum = 999999999;
if ( $totalpages <= 1 || $page > $totalpages ) return;
return paginate_links( array(
'base' => str_replace( $bignum, '%#%', esc_url( get_pagenum_link( $bignum ) ) ),
'format' => '',
'current' => max( 1, $page ),
'total' => $totalpages,
'prev_text' => 'Prev',
'next_text' => 'Next',
'type' => 'list',
'show_all' => false,
'end_size' => $end_size,
'mid_size' => $mid_size
) );
}
Create a page (for example called prints
) and select the above page template.
Then you can visit:
example.com/prints/
example.com/prints/page/2/
example.com/prints/page/3/
And if you uncomment the debug line, you will get for example:
taxonomy: prints_cat -
number: 3 -
page: 2 -
offset: 3 -
totalterms 6 -
totalpages: 2