とあるWeb制作会社を立ち上げた人の日記

営業と開発の苦労や思う事をこっそり投稿する

【Wordpress】「Custom Post Type UI」でカスタム投稿のタクソノミーを出力してみた

CPT UI

目次

1.はじめに
2.タクソノミー の作成
3.タクソノミー の表示
 3.1タクソノミー一覧の表示
 3.2カスタム投稿ごとのタクソノミー の表示
3.3まとめ
4.最後に

1.はじめに

「Custom Post Type UI」の基本的な記事はよくありますが、

プラグインを使用してカスタム投稿タイプのタクソノミー をarchive.php等で出力する

というのは、あまり見られなかったので今回記事にする事にしました。

2.タクソノミーの作成

CPT UIをインストールした後、タクソノミーの追加と編集という項目がありますので、

選択しますと、

CPT UI

上記のようなページが表示されます。

タクソノミー スラッグ:URL等の名前。出力する際に使用する。

複数形のラベル:管理画面での表記。僕は分かりやすく「カテゴリー」で作成しています。
単数形のラベル:どこで表示されるかは不明。複数形と同じラベル名にしています。

こちらでは、タクソノミー を作成したいカスタム投稿を選択します。

以上で、タクソノミー の作成は終了です。

CPT UIで作成したタクソノミー がカスタム投稿に追加されていると思います。



こちらが、タクソノミー で追加できる項目になります。分類名とそのスラッグを追加してください。

3タクソノミー の表示

3.1タクソノミーの一覧表示

タクソノミー が作成できたという事で、カスタム投稿を一覧で表示する際に、

タクソノミー ごとで表示させたい

ということが恐らく出てくると思うので紹介します。

<?php
  $terms = get_terms('タクソノミー 名);
  foreach ( $terms as $term ) {
    echo '<li class="taxonomy_li">';
    echo '<a class=" " href="'.get_term_link($term).'">'.$term->name.'</a>';
    echo '</li>';
  }
?>

このコードでタクソノミー ごとに分けられるページを表示できますので、

archive-カスタム投稿のスラッグ.phpに追加してください。

遷移するページはtaxonomy-タクソノミーのスラッグ.phpになります。
(タクソノミー のスラッグは、CPT UIで作成したスラッグで作成してください)

なければ子テーマで作成してください。

get_termsについてはこちらで確認してください。

$term->name:タクソノミー 名が表示されます。

このコードでは、タクソノミー ごとの表示はできましたが、

全てのタクソノミー の表示ができないので、archive-カスタム投稿のスラッグ.phpに遷移するボタンを別で作成してください。

他にも方法はあると思いますが、元のページを表示するだけなので、

archive-カスタム投稿のスラッグ.phpの表示で対応しました。

何か他にいい方法があれば教えていただけると幸いです。

これで、taxonomy-タクソノミーのスラッグ.phpに選択したタクソノミー のスラッグを送信できます。

次に送信したスラッグで表示するtaxonomy-タクソノミー のスラッグ .phpについて説明します

3.2タクソノミー 別の表示

今回は、例としてタクソノミー のスラッグをcategoryとして説明します。

タクソノミー の取得

<?php get_the_terms( $id, $taxonomy ); ?>



があります。本来こちらで項目を取得すると思うのですが、なぜか出力できなかったので、別のコードで説明します。

<?php
$my_terms = get_queried_object();
?>



こちらのコードでタクソノミー 名を取得できます。

次に取得したタクソノミー 名を利用して一覧を表示します。

カスタム分類のクエリ

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => $my_terms->slug,
        ),
    ),
);
$query = new WP_Query( $args );

'post_type':カスタム投稿のスラッグ

'taxonomy':タクソノミー のスラッグ(今回はcategory)

'terms':$my_termsで選択したタクソノミーに対するスラッグ

カスタム分類のクエリを利用することで、選択したタクソノミー に対するスラッグを取得し、

ループ関数を使用することで、

タクソノミー 別の表示が可能になります。

ループ関数の例

<?php 
if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 
        //
        // 投稿がここに表示される
        //
    } // end while
} // end if
?>

3.3まとめ

categoryをタクソノミー のスラッグとした場合。

<?php
/*タクソノミー 別で選択しtaxonoomy-category.phpに遷移する。*/
  $terms = get_terms('category');
  foreach ( $terms as $term ) {
    echo '<li class="taxonomy_li">';
    echo '<a class=" " href="'.get_term_link($term).'">'.$term->name.'</a>';
    echo '</li>';
  }
?>
<?php
/*選択したタクソノミー の項目取得*/
$my_terms = get_queried_object();
$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'category',
            'field'    => 'slug',
            'terms'    => $my_terms->slug,
        ),
    ),
);
$the_query = new WP_Query( $args );
?>
/*一覧取得*/
<ul>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <li>
                     //表示したい投稿内容
                    //例
     if(has_post_thumbnail()){
                the_post_thumbnail(); 
           }
                    //
                 </li>
    <?php endwhile; ?>
</ul>

最後のループ関数について今回は説明を省略します。

最後に

カスタム投稿タイプはHP制作において頻繁に利用する機会が多いと思いますし、

使いこなせるようになる事で、案件の幅が広がると思います。

例えば、標準の投稿タイプですと「ブログ記事」等の投稿しかできませんが、

カスタム投稿タイプは、Advanced Custom Fieldsを使用すれば「スタッフの自己紹介」や「サロン等のメニュー」を追加できる機能を作成できます。

通常の投稿と同様、投稿の分類可能な機能も必要になってくると思います。

ですので、ぜひ利用してみてください。