タクソノミーの条件分岐は「is_taxosomy」ではなく「is_tax」

タクソノミーの条件分岐は「is_tax」

自分のための備忘録として書きます。

先日、タクソノミーの条件分岐に「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>

<!-- 省略 -->

前後は省略していますが、下記の流れで処理しています。

  1. カスタム投稿(BLOG)のアーカイブページと個別ページの条件分岐
  2. タクソノミー(上記BLOGのカテゴリ)の条件分岐
  3. 投稿(NEWS)一覧ページの条件分岐
  4. 投稿(NEWS)の個別ページの条件分岐

実際に表示された内容です

カスタム投稿(ブログ)のアーカイブページ。個別ページは同じ表示なので省略。

タクソノミー(ブログのカテゴリ)ページ。問題なく表示されています。

投稿(ニュース)一覧ページ。ここで表示がおかしいです。投稿の一覧ページですが、パンくずがBLOGと表示されています。あと「≫」も余計に表示されています。

 

後続の条件分岐である投稿(ニュース)の個別ページも同様の表示でした。

is_taxで対応

「is_taxonomy」の部分を「is_tax」に変更したら、パンくずリストが正常に表示されました。

is_taxの後続である投稿(ニュース)一覧ページが正常に表示されました。

まとめ

タクソノミーを条件分岐したいときは「is_taxonomy」は使わないこと。必ず「is_tax」を使うこと。

facebook
twitter
line
hatena
pocket