Wordpressベースのメディアを運用しており、
あるタグに紐づいた記事の一覧を表示するページを作りたいと思っています。
しかし、記事を表示するロジック以前に、
そもそも指定のURLで動的にアーカイブページを生成する方法がわからなかったため、どなたかご教示いただけると幸いです。
URLは下記のようにしたいと思っています。
https://abc.com/tag/apple
(タグ=appleの記事の一覧ページ)
ちなみに、
- 記事は、複数のカスタム投稿タイプを利用して投稿されている
- 記事へのタグ付けは、デフォルトのタグ機能ではなく、カスタムタクソノミーで'tag'を設け、それを複数のカスタム投稿タイプを横断する形でタグ付けしている
つまり、今回行いたいのは、あるtag(カスタムタクソノミー)に紐づいた、全ての記事(複数のカスタム投稿タイプを横断)を表示するページを作成したい、ということです。
各記事内では下記のコードにて、タグのリンクと一覧表示に成功しています。
php
<div> <?php $terms = get_the_terms(get_the_ID(), 'tag'); if (! empty($terms)){ echo "<h3>Tag :</h3>"; foreach ( $terms as $term ){ $link = get_term_link($term->slug, $term->taxonomy); ?> <a href="<?php echo $link; ?>"> <?php echo esc_html($term->name); ?> </a> <?php }; }; ?> </div>
また、記事の詳細ページで実際に出力されたタグのリンクも
https://abc.com/tag/apple
となっていて、ここまでは問題ないように見えます。
ただし、問題となのは、上記のリンクを踏んだ先のページが404となってしまうことです。
テンプレートファイルでは、archive.php、tag.php、taxonomy-tag.phpいずれも用意していますが、適用されません。
また、functions.phpにて、template_redirectをフックにして、URLに'tag'が含まれている場合は指定のテンプレートを利用する、というのもやってみましたが、こちらはステータスが404で返ってくる(指定テンプレは表示される)ので避けたいです。
また、カスタムタクソノミー'tag'の記述は下記のようにしています。
php
function new_tag(){ register_taxonomy( 'tag', array( //下記はそれぞれカスタム投稿タイプ 'reisen', 'aktuelles', 'alltag', 'kulturerbe', 'moderne-kultur', 'japan-in-deutschland', ), array( 'label' => 'Tag', 'labels' => array( 'edit_item' => 'edit_item', 'add_new_item' => 'add_new_item', 'search_items' => 'search', ), 'public' => true, 'hierarchical' => false, ) ); } add_action('init', 'new_tag');
不明瞭な点等あれば、コメントいただけると幸いです。
以上、よろしくお願いします。
まだ回答がついていません
会員登録して回答してみよう