タクソノミーアーカイブを別のタクソノミーで絞り込む。
%category%/%post_id%.html
my_post
| タクソノミー名 | ターム | テンプレート |
|——|—————|————————————|
| foo | foo1, foo2 | taxonomy-foo.php |
| bar | bar1, bar2 | なし |
fooアーカイブ(template-foo.php)のなかでbarで絞り込みをする。
taxonomy-foo.php
global $wp_query;
$current = $wp_query->get_queried_object();
$current_link = get_term_link( $current->slug, $current->taxonomy );
$terms = get_terms( array( 'bar' ), array( 'orderby' => 'count', 'order' => 'DESC' ) );
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
$query = array(
$term->taxonomy => $term->slug
);
$filter_link = add_query_arg( $query, $current_linkl );
echo '<a href=“' . esc_url( $filter_link ) . '“>' . esc_html( $term->name ) . '</a> ';
}
}
// ページネイト
if ( get_query_var( 'paged' ) ) {
$paged = get_query_var( 'paged' );
} elseif ( get_query_var( 'page' ) ) {
$paged = get_query_var( 'page' );
} else {
$paged = 1;
}
// fooタクソノミー項目取得
$tax_args = array(
array(
'taxonomy' => 'foo',
'field' => 'slug',
'terms' => $current->slug
)
);
// barタクソノミー項目取得
$bar = get_query_var( 'bar' );
if ( ! empty( $bar ) ) {
array_push(
$tax_args,
array(
'taxonomy' => 'bar',
'field' => 'slug',
'terms' => $bar
)
);
}
// クエリ作成
$args = array(
'post_type' => 'my_post',
'tax_query' => $tax_args,
'posts_per_page' => 18,
'paged' => $paged
);
$my_query = new WP_Query( $args );
// ループ処理
if ( $my_query->have_posts() ) {
}
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。