【Wordpress】「Custom Post Type UI」でカスタム投稿のタクソノミーを出力してみた
目次
1.はじめに
2.タクソノミー の作成
3.タクソノミー の表示
3.1タクソノミー一覧の表示
3.2カスタム投稿ごとのタクソノミー の表示
3.3まとめ
4.最後に
1.はじめに
「Custom Post Type UI」の基本的な記事はよくありますが、
プラグインを使用してカスタム投稿タイプのタクソノミー をarchive.php等で出力する
というのは、あまり見られなかったので今回記事にする事にしました。
2.タクソノミーの作成
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を使用すれば「スタッフの自己紹介」や「サロン等のメニュー」を追加できる機能を作成できます。
通常の投稿と同様、投稿の分類可能な機能も必要になってくると思います。
ですので、ぜひ利用してみてください。