WP_Term_QueryでWP-PageNaviを使用する
目次
概要
ページネーションを設置する時に大変便利なWP-PageNaviのプラグインですが、執筆時点ではWP_Queryには使えてもWP_Term_Queryには使う事が出来ません。
ですが、以下のコードを使う事で使用が可能になります。
コード
タクソノミーのターム一覧を表示させる箇所に設置するコード
<?php $args = array( 'taxonomy' => 'category', // 取得するタクソノミー 'number' => 1, // 取得する要素数 'offset' => 0, 'hide_empty' => false, // false の場合は関連する投稿の無いタームも表示させる ); $paged = get_query_var('paged'); if( !empty( $paged ) ) { $args['offset'] = ( $paged - 1 ) * $args['number']; } $term_query = new WP_Term_Query( $args ); ?> <?php if( !empty( $term_query ) ) : ?> <ul> <?php foreach( $term_query->get_terms() as $term ) : ?> <li><a href="<?php echo esc_url( get_term_link( $term ) ); ?>"><?php esc_html_e( $term->name ); ?></a></li> <?php endforeach; ?> </ul <?php endif; ?>
ページネーションを表示させる箇所に設置するコード
<?php class wpx_terms_pagenavi { function __construct( $args = '' ) { $this->args['number'] = $args['number']; $this->args['posts_per_page'] = $this->args['number']; $this->args['paged'] = get_query_var('paged'); $args['offset'] = 0; $found_term_counts = wp_count_terms( $args['taxonomy'], $this->args ); print_r($found_term_counts); if( !empty( $found_term_counts ) ) { $this->max_num_pages = floor( $found_term_counts / $args['number'] ); if( $found_term_counts % $args['number'] > 0 ) { $this->max_num_pages++; } } } function get( $name ) { return $this->args[$name]; } function pagenavi() { if( function_exists('wp_pagenavi') ) { wp_pagenavi( array( 'query' => $this ) ); } } public $args = array(); public $max_num_pages = 0; } $wpx_terms_pagenavi = new wpx_terms_pagenavi( $args ); ?> <div class="pagination"> <?php $wpx_terms_pagenavi->pagenavi(); ?> </div>
WP-PageNaviが有効化されていない場合は当然動きませんのでご注意下さい。
また、この仕組みを利用すればWP_Term_Queryに関わらず全ての要素でページネーションがWP-PageNaviにより生成出来るようになるかと思われます。
(0) Comments