ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

カスタムタクソノミー(カスタム分類)をプラグイン「Toolset Types」で実装する@WordPress

WordPressプラグイン「Toolset Types」を使用してカスタムタクソノミー(カスタム分類)を作る例です。

先日投稿した内容にあるセミナー開催情報を投稿するためのカスタム投稿タイプ「セミナー情報」に、この投稿タイプ専用のカテゴリをカスタム分類で作っていきます。

blog.showzine.co

実装における環境

WordPress:4.5.2
Toolset Types:2.1

カスタム分類の作成画面へ

f:id:showjinx:20160629131625p:plain

管理画面のメニュー「Toolset」から「Taxonomy」へ進みます。

投稿タイプの一覧と同じように、WordPressデフォルトで存在する二種類のタクソノミー(分類)が確認できます。

f:id:showjinx:20160629131644p:plain

これらはデフォルトの投稿用に分けておき、今回はあらたに分類を作ります。

「Taxonomy」とある文字列の右側の「新規追加」へ。

新規Taxonomyを追加

f:id:showjinx:20160629131708p:plain

  • Name plural
  • Name singluar
  • スラグ

この三つが必須です。

投稿タイプのときと違ってName pluralとName singularが同一でも許容されます。

f:id:showjinx:20160629131734p:plain

今回はこのように設定し、セミナー情報に種別の分類を持たせることにします。

他に

  • ラベル
  • タクゾノミータイプ(翻訳だと「ゾ」なんですね)
  • このTaxonomyに使用されるPost Types
  • オプション

ラベル、オプションは必要なときに調べて使用すればいいと思います。投稿タイプにたんに分類を持たせるには、とくにこのへんを細かく設定したこともないので。(あったかもしれませんが、それはかなり少ないです)

タクゾノミータイプ

階層的かフラットか、この例では「階層的」を選びます。階層を持たせたい場合(親子関係を持たせるとか)はこの「階層的」を。カテゴリなんかはこれにあたると思います。その必要がない場合には「フラット」を選択します。タグの場合にはこちらを選択します。

f:id:showjinx:20160629131756p:plain

このTaxonomyに使用されるPost Types

f:id:showjinx:20160629131821p:plain

作ろうとしている分類(Taxonomy)をどこで使うのか、その投稿タイプの一覧が示されています。

今回は「セミナー情報の投稿」に新しく作る分類を持たせたいので「セミナー情報の投稿」にチェックを入れます。

投稿タイプごとに使える分類を割り当てるにはこの部分で設定すれば良いです。

編集画面右上の「保存」ブロックにある「Taxonomyを保存」ボタンをクリックして完了です。

分類の項目を追加する

作成した分類を保存すると、この分類が使える投稿タイプ「セミナー情報の投稿」に「セミナー種別」という項目が追加されています。デフォルト投稿で「カテゴリ」にあたるものになります。

f:id:showjinx:20160629131851p:plain

この「セミナー種別」に進んで、デフォルトのカテゴリと同様にカテゴリ(分類)を作っていきます。

  • 名前:サイト上で表示される名称
  • スラッグ:ループで条件を指定する時などに使用(半角英小文字、半角数字、ハイフンのみ使用可能)

この二つを設定しておけば十分ですが、必要であれば親子関係も設定します。(説明も必要な場合には設定しますが、利用頻度は高くないです=私感ですが)

名前、スラッグを入力したら下の「Add New セミナー種別」で保存し、他にも必要なものを登録していきます。(スラッグや名称は後からこの画面で変更可能です)

f:id:showjinx:20160629131915p:plain

この例では架空でWordPress、NLP、ぬか漬けという三種のタイプの講座、セミナーを開催するという設定で、このように分類(カテゴリ)を設定しました。

f:id:showjinx:20160629131934p:plain

投稿に分類を割り当てる

前回作成したカスタム投稿タイプ「セミナー情報の投稿」で投稿済みの投稿に分類を割り当ててみます。

「全アイテム」から該当する投稿の編集画面に進みます。

f:id:showjinx:20160629131957p:plain

投稿の編集画面に進むと、前回はなかった「セミナー種別」というカテゴリ欄が確認出来ます。

さきほど作った項目三つが確認出来ます。この架空のセミナーは「ぬか漬け」セミナーなので「ぬか漬け」にチェックを入れて「更新」します。

f:id:showjinx:20160629132018p:plain

「+ Add New セミナー種別」から新規に項目を追加できますが、このやり方だと「スラッグ」が項目の名称と同じになります。これだとスラッグとして不適切ですので、その場合にはさきほどの「セミナー種別」(カテゴリ)一覧画面で変更します。

記事画面でカテゴリ(カスタム分類)を表示させる

カスタム分類なのでWordPressのデフォルトの関数「the_category()」は使えません。

get_the_term_list()関数を使い、引数に表示させたい分類(タクソノミーのスラッグ)を指定します。引数で分類名をli要素で出力するようにしている例です。

<ul class="optional">
    <li class="date">Published: <?php echo get_post_time('M jS, Y'); ?></li>
    <?php echo get_the_term_list($post->ID ,'seminar-type', '<li>', '</li><li>', '</li>'); ?>
</ul>

ユーザ側画面でソースも一緒に見てみるとこんなふうになっています。

f:id:showjinx:20160629132047p:plain

この分類に親子関係がある場合はどうでしょうか。「ぬか漬け」に子分類として「野菜」を追加して確認してみます。

f:id:showjinx:20160629132113p:plain

親カテゴリ「ぬか漬け」と子カテゴリ「野菜」が出力されるようになりました。ソースを確認するとわかりますが、子カテゴリはネストされて出力されているので、見た目上もそのようにカスタマイズしたい場合にはCSSでそれとわかるように(親子関係が)装飾するといいでしょう。

f:id:showjinx:20160629132133p:plain

リスト要素を使わずに、ただタグのようにカンマ区切りでリンク付き文字列として出力させる場合は以下のように記述します。

<?php echo get_the_term_list( $post->ID, ‘タームのスラッグ', ‘分類名: ', ', ', '' ); ?>

分類名が不要な場合は分類名部分の値を削除します。引用符自体は残してください。引用符ごと削除すると機能しません。

この例では分類名に「セミナー種別」と表示させ、dl要素でマークアップしました。

<?php echo get_the_term_list( $post->ID, 'seminar-type', '<dl class="seminar_cat"><dt>セミナー種別:</dt><dd>', ', ', '</dd></dl>' ); ?>

引数の指定で任意のhtml要素で出力することが出来ます。この例ではdl要素で括り、セミナー種別という名称をdt要素で、分類名はdd要素でマークアップしています。このようにしておくとCSSでのデザイン制御もしやすいかと思います。

ブラウザのソース表示で確認するとこのようになっています。

f:id:showjinx:20160629132201p:plain

カテゴリをひとつだけ指定可能にしたい場合もあるかもしれません。その場合にはこちらを参考にしてください。使用テーマのfunctions.phpに記述します。

blog.showzine.co

タグ(フラット)もつけてみる

セミナー種別においてのみ有効なタグを、さきほどのカスタム分類と同じように作り(タクゾノミータイプは「フラット」を指定)、カテゴリー(セミナー種別)とタグ(セミナー用タグ)を出力する例です。

                <ul class="optional">
                    <li class="date">Published: <?php echo get_post_time('M jS, Y'); ?></li>
                </ul>
                <?php echo get_the_term_list( $post->ID, 'seminar-type', '<dl class="seminar_category"><dt>Category : </dt><dd>', ', ', '</dd></dl>' ); ?>
                <?php echo get_the_term_list( $post->ID, 'seminar-tag', '<dl class="seminar_tag"><dt>Tags : </dt><dd>', ', ', '</dd></dl>' ); ?>

投稿年月日の下にCategoryとTagsが出力されています。

f:id:showjinx:20160629132248p:plain

以上です。

プラグイン「Toolset Types」を使ったカスタム投稿、カスタム分類について、基本的なところですが、導入に必要なあれこれをまとめてみました。

本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版

本格ビジネスサイトを作りながら学ぶ WordPressの教科書 Ver.4.x対応版