こんにちは!
実案件2つの投稿タイプにカテゴリーは共通で使用するときに投稿タイプ別のカテゴリーページを表示する機会がありましたので備忘録で記事にしようと思いました。
目次
使用シーン
- 記事詳細ページのサイドバーに別々の投稿タイプに共通カテゴリーがあるとき
同じ様なケースがあったときに参考にしてみてください!
今回はカスタムタクソノミーでの実装でしたのでターム別ページになります。
実際のコード
よくあるサイドバーにあるターム別ページをリンク付きで取得します。
<?php $terms = get_terms('タクソノミースラッグ'); ?>
<ul>
<?php foreach ($terms as $term) : ?>
<li>
<a href="<?php echo get_term_link($term->slug, 'タクソノミースラッグ') ?>">
<?php echo $term->name ?>
</a>
</li>
<?php endforeach; ?>
</ul>
こちらを少しリンク部分を変更します。
GETパラメーターを使用してリンクを少し変更します。
現在の投稿タイプを値として変数に入れてあげることで自動で投稿タイプを遷移先に渡せる様になります。
<?php
$terms = get_terms('タクソノミースラッグ');
$post_type = get_post_type(); //追加
$url = '?type='. $post_type; //追加
?>
<ul>
<?php foreach ($terms as $term) : ?>
<li>
<a href="<?php echo get_term_link($term->slug, 'タクソノミースラッグ') . $url ?>">
<?php echo $term->name ?>
</a>
</li>
<?php endforeach; ?>
</ul>
GETパラメーターがついていればURLの後ろに「?●●●=○○○」になります。
今回で言うと「○○○」$post_typeの変数が入ります。
遷移先のページでGETパラメーターの値を利用してサブループにpost_typeを入れます。
<?php if (!empty($_GET["type"])) : ?>
<?php $type = $_GET['type']; ?> //GETパラメーターの値を取得
<?php endif; ?>
<?php
$args = array(
'posts_per_page' => 9,
'paged' => $paged,
'post_type' => $type //GETパラメーターの値を代入
'tax_query' => array(
array(
'taxonomy' => $taxonomy,
'terms' => $term,
'field' => 'slug',
'operator' => 'IN',
'include_children' => false,
),
),
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()) :
while ($my_query->have_posts()) : $my_query->the_post();
?>
//ループする記事
<?php endwhile; ?>
<?php else : ?>
<p>現在準備中です。</p>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
後は記事の中身を調整するだけです。
以上になります。