質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

815閲覧

[Wordpress]タグに紐づいた記事の一覧ページを表示したい

r1_1092829

総合スコア17

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2017/11/27 12:22

編集2017/11/27 13:02

Wordpressベースのメディアを運用しており、
あるタグに紐づいた記事の一覧を表示するページを作りたいと思っています。

しかし、記事を表示するロジック以前に、
そもそも指定のURLで動的にアーカイブページを生成する方法がわからなかった
ため、どなたかご教示いただけると幸いです。

URLは下記のようにしたいと思っています。
https://abc.com/tag/apple
(タグ=appleの記事の一覧ページ)

ちなみに、

  • 記事は、複数のカスタム投稿タイプを利用して投稿されている
  • 記事へのタグ付けは、デフォルトのタグ機能ではなく、カスタムタクソノミーで'tag'を設け、それを複数のカスタム投稿タイプを横断する形でタグ付けしている

つまり、今回行いたいのは、あるtag(カスタムタクソノミー)に紐づいた、全ての記事(複数のカスタム投稿タイプを横断)を表示するページを作成したい、ということです。

各記事内では下記のコードにて、タグのリンクと一覧表示に成功しています。

php

1<div> 2 <?php 3 $terms = get_the_terms(get_the_ID(), 'tag'); 4 if (! empty($terms)){ 5 echo "<h3>Tag :</h3>"; 6 foreach ( $terms as $term ){ 7 $link = get_term_link($term->slug, $term->taxonomy); 8 ?> 9 <a href="<?php echo $link; ?>"> 10 <?php echo esc_html($term->name); ?> 11 </a> 12 <?php 13 }; 14 }; 15 ?> 16</div>

また、記事の詳細ページで実際に出力されたタグのリンクも
https://abc.com/tag/apple
となっていて、ここまでは問題ないように見えます。

ただし、問題となのは、上記のリンクを踏んだ先のページが404となってしまうことです。

テンプレートファイルでは、archive.php、tag.php、taxonomy-tag.phpいずれも用意していますが、適用されません。

また、functions.phpにて、template_redirectをフックにして、URLに'tag'が含まれている場合は指定のテンプレートを利用する、というのもやってみましたが、こちらはステータスが404で返ってくる(指定テンプレは表示される)ので避けたいです。

また、カスタムタクソノミー'tag'の記述は下記のようにしています。

php

1function new_tag(){ 2register_taxonomy( 3'tag', 4array( //下記はそれぞれカスタム投稿タイプ 5'reisen', 6'aktuelles', 7'alltag', 8'kulturerbe', 9'moderne-kultur', 10'japan-in-deutschland', 11), 12array( 13'label' => 'Tag', 14'labels' => array( 15 'edit_item' => 'edit_item', 16 'add_new_item' => 'add_new_item', 17 'search_items' => 'search', 18), 19'public' => true, 20'hierarchical' => false, 21) 22); 23 24} 25add_action('init', 'new_tag');

不明瞭な点等あれば、コメントいただけると幸いです。

以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

tag はデフォルトで使用しているので、カスタムタクソノミー名としては使えないと思います。別の名称で試してみてください。

投稿2017/11/27 15:28

編集2017/11/27 15:38
kei344

総合スコア69364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

r1_1092829

2017/11/27 16:16

kei344様 ありがとうございます! まさしくtaxonomy名を変更したら動きました。 すでに前任者がtaxonomy名を'tag'として色々な記述をしているのでこれからソースコードを探し回って変更しなくてはいけませんが、原因がわかってよかったです。 (taxonomy名を'tag'のまま、slugで別名をつけても動きませんでした)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問