タクソノミーの条件分岐は「is_taxosomy」ではなく「is_tax」
2022-03-18
自分のための備忘録として書きます。
先日、タクソノミーの条件分岐に「is_taxonomy」を使いましたが、後続の処理が正常に行われませんでした。
ページの条件分岐で「is_page」「is_archive」などがあるので、たぶん「is_taxonomy」だろうと調べもせずに使いました。
ところがエラーメッセージが表示される訳でもなく、タクソノミー自体も条件分岐されたので、原因がわかりませんでした。調査に時間がかかってしまいましたね。
「is_tax」と書くことで解決しましたが、今後は忘れないように記事にします。
目次
条件分岐が途中から意図しない表示になった
パンくずリストを作成しましたが、正常に表示されませんでした。最初は問題無くパンくずリストが表示されましたが、途中からパンくずリストが同じ文言で表示されてしまいました。
下記がコードです。
<!-- 省略 --> <!-- BLOG カスタム投稿 アーカイブページ&個別ページ --> <?php elseif (is_post_type_archive('blog') || is_singular('blog')) : ?> <li><a href="<?php echo esc_url(get_post_type_archive_link('blog')); ?>">BLOG</a></li> <?php if (is_singular('blog')) : ?> <li><?php echo strip_tags(get_the_title($post->ID)); ?></li> <?php endif; ?> <!-- タクソノミー BLOGのカテゴリー --> <?php elseif (is_taxonomy('blogcat')) : ?> <li><a href="<?php echo esc_url(get_post_type_archive_link('blog')); ?>">BLOG</a></li> <li><?php single_term_title(); ?></li> <!-- NEWS 記事一覧 --> <?php elseif (is_home()) : ?> <li><a href="<?php echo esc_url(get_post_type_archive_link('post')); ?>">NEWS</a></li> <!-- 省略 -->
前後は省略していますが、下記の流れで処理しています。
- カスタム投稿(BLOG)のアーカイブページと個別ページの条件分岐
- タクソノミー(上記BLOGのカテゴリ)の条件分岐
- 投稿(NEWS)一覧ページの条件分岐
- 投稿(NEWS)の個別ページの条件分岐
実際に表示された内容です
カスタム投稿(ブログ)のアーカイブページ。個別ページは同じ表示なので省略。
タクソノミー(ブログのカテゴリ)ページ。問題なく表示されています。
投稿(ニュース)一覧ページ。ここで表示がおかしいです。投稿の一覧ページですが、パンくずがBLOGと表示されています。あと「≫」も余計に表示されています。
後続の条件分岐である投稿(ニュース)の個別ページも同様の表示でした。
is_taxで対応
「is_taxonomy」の部分を「is_tax」に変更したら、パンくずリストが正常に表示されました。
is_taxの後続である投稿(ニュース)一覧ページが正常に表示されました。
まとめ
タクソノミーを条件分岐したいときは「is_taxonomy」は使わないこと。必ず「is_tax」を使うこと。