別のカスタム投稿タイプにつけたタグで紐付けて関連タグの投稿一覧を表示してみた

タイトルわかりづらいかもしれません。要するに、、

ここに「ニュース(news)」「お弁当(bento)」というカスタム投稿タイプを持ったサイトがあるとします。
ニュースの投稿に「お弁当」というタグを付けると、お弁当の一覧(archive.php)にそのニュースのタイトルと日付と・・・が表示されるというわけです!

それでもわかりづらいな。

※あらかじめnewsには「お弁当(tags-bento)」というタグを作成しておきます。

bento

コードはこれ。お弁当の一覧に表示させるため、archive.phpに追加しました。

<?php
$slug = explode('/', $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]);
$archive_slug = $slug[1]; // https://sample.com/bento/の"bento"を取得。
$archive_tags_slug = 'tags-'.$archive_slug; //tags-bentoを作成。
//news投稿の中でtags-bentoがついた投稿を抽出。
query_posts( array(
	'post_type' => 'news',
	'tags_topics' => $archive_tags_slug,
	'paged' => $paged, 
	'orderby' => 'date',
	'order' => 'DESC'
));
//現在のpost_type "bento"を定義。(newsクエリー内でも使えるように)
$obj = get_post_type_object( $archive_slug );
$post_type = $obj->labels->singular_name; 
if(have_posts()):
?>
<div id="tag_list">
    <h2><span><?php single_tag_title(); ?>関連の投稿</span></h2>
    <ul>
        <?php while(have_posts()):the_post();?>
        <li><?php echo get_the_date('Y.m.d');?> <a href="<?php the_permalink();?>"><?php the_title();?></a></li>
        <?php endwhile; ?>
    </ul>
</div>
<?php endif; wp_reset_query(); ?>

一度に別の投稿タイプを動かすため、post_typeの値が混乱しちゃいます。
だからめんどくさいけどそのページのURLから取ってくるというやり方で解決しました・・・。
もっといいやり方があるのかも?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA