【WordPress】カスタム投稿タイプに追加したカスタムタクソノミーを表示させる

以下、作業用メモです。

各記事のカテゴリとタグを表示するコードを追加する

カスタム投稿タイプのスラッグ名を「blog」として、この機能を実装するためには、以下の手順に従います。

  1. カスタム投稿タイプ(Custom Post Type)とカスタムタクソノミー(Custom Taxonomy)を使用しているので、それらの情報を使ってリンクを生成する必要があります。
  2. ブログ記事の表示テンプレートに、各記事のカテゴリとタグを表示するコードを追加します。
  3. カテゴリとタグのリンクをクリックしたときに、それぞれの一覧ページに遷移するようにリンクを設定します。

まずは、各記事のカテゴリとタグを表示するコードを追加しましょう。singular-blog.php ファイルに以下のコードを追加します。

<?php
// カテゴリを取得して表示
$categories = get_the_terms( get_the_ID(), 'blog_cat' );
if ( $categories && ! is_wp_error( $categories ) ) {
    echo '<div class="blog-categories">';
    echo '<ul>';
    foreach ( $categories as $category ) {
        echo '<li><a href="' . esc_url( get_term_link( $category ) ) . '">' . esc_html( $category->name ) . '</a></li>';
    }
    echo '</ul>';
    echo '</div>';
}

// タグを取得して表示
$tags = get_the_terms( get_the_ID(), 'blog_tag' );
if ( $tags && ! is_wp_error( $tags ) ) {
    echo '<div class="blog-tags">';
    echo '<ul>';
    foreach ( $tags as $tag ) {
        echo '<li><a href="' . esc_url( get_term_link( $tag ) ) . '">' . esc_html( $tag->name ) . '</a></li>';
    }
    echo '</ul>';
    echo '</div>';
}
?>

次に、カテゴリとタグの一覧ページを作成します。taxonomy-blog_cat.phptaxonomy-blog_tag.php というファイル名でテンプレートファイルを作成します(もし存在しない場合)。これらのファイルはそれぞれカテゴリとタグの一覧ページを表示します。

それぞれのファイルに以下のコードを追加します。

<?php
// カテゴリまたはタグのタイトルを表示
$term = get_queried_object();
echo '<h1>' . esc_html( $term->name ) . '</h1>';

// カテゴリまたはタグに関連する記事のループ
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post();
        // ここで記事を表示するためのループ
    }
} else {
    echo '<p>このカテゴリまたはタグに関連する記事はありません。</p>';
}
?>

これで、各記事のカテゴリとタグが表示され、それぞれのリンクがクリックされた場合に正しいカテゴリ別一覧ページとタグ別一覧ページに遷移するようになります。必要に応じて、表示される内容やスタイルを調整してください。

カテゴリ別ページのパーマリンクを変更する

カテゴリ別ページのパーマリンクを http://example.com/blog/blog_cat/category-name/ の形式にすることは可能です。

この場合、WordPressのパーマリンク設定を変更する必要があります。具体的には、カスタム投稿タイプ blog に関連付けられたカテゴリのパーマリンクを変更する必要があります。

以下の手順で設定を変更します。

  1. WordPressの管理画面にログインします。
  2. 「設定」メニューから「パーマリンク」を選択します。
  3. 「パーマリンクのカスタム構造」を選択し、次の構造を入力します。
   /blog/%blog_cat%/%postname%/
  1. 変更を保存します。

これで、カスタム投稿タイプ blog に関連付けられたカテゴリのパーマリンクが http://example.com/blog/blog_cat/category-name/ の形式になります。

ただし、この変更はすべてのカテゴリのパーマリンクに影響します。他の投稿タイプに関連付けられたカテゴリのパーマリンクも同様に変更されますので、ご注意ください。

この記事を書いた人