WPのカスタム分類(タクソノミー)とは?活用法とメリットとデメリットまとめ FavoriteLoadingあとで読む

: 丸山 耕二
残念ながらカスタム分類(タクソノミー)についてはあまり情報が多くありません。 そこで、今回の記事ではこのカスタムタクソノミー機能を深掘りしたいと思います。

WordPressには便利な2つのカスタム機能があります。 カスタム投稿タイプと、カスタムタクソノミー(分類)です。 一緒に使うことも多く、同時に紹介されることが多いのですが、この2つ、機能としては全く別物です。

カスタム投稿タイプは、記事を「投稿」する時に使うもの。つまり投稿機能を拡張(カスタム)するもの。 一方、カスタムタクソノミー(分類)は、記事を分類する時に使うもの。つまりカテゴリやタグ機能を拡張するものです。タクソノミーとは「分類」という意味の英語です。

残念ながら後者のカスタムタクソノミーについてはあまり情報が多くありません。 そこで、今回の記事ではこのカスタムタクソノミー機能を深掘りしたいと思います。

【目次】

  1. なぜカスタムタクソノミーを使うのか?
  2. カスタムタクソノミーの使い方
  3. カスタムタクソノミーを使うメリットとデメリット
  4. カテゴリー、タグ、カスタムタクソノミー、どれを使うべきか?その判断基準
  5. カスタムタクソノミーのテンプレート
  6. カスタム分類(タクソノミー)のURL
  7. SEO対策として、カテゴリ構造とパーマリンク(URL)はどうするべきか?
  8. カスタムタクソノミーの一覧の取得方法(関数)
  9. カスタムタクソノミーを作るためのプラグイン
  10. まとめ
  11. 【基礎知識】カテゴリとタグの違いとは?

 

QA Heatmap Analyticsは弊社で作った無料で簡単につかえるのに高機能な行動分析ツールです

なぜカスタムタクソノミーを使うのか?

一言でいえば、カテゴリとタグだけしか使えないと、ごちゃごちゃする情報をカスタムタクソノミーを使えばビシッと整理できるからです。

たとえば、ゴルフのノウハウを発信するサイトを運用しているとします。 最初はカテゴリとして「コラム」とか「特集」なんてカテゴリを作ります。こんな感じ。

【タイトル】ゴルフのボールはなぜ飛ぶのか?

【カテゴリ】

  • ゴルフコラム

ところが、しばらく運用していると以下のようになってきます。

【タイトル】接待ゴルフは嫌だー!最初のドライバーショットは手を抜くべき?

【カテゴリ】

  • レッスン
  • ゴルフコラム
  • 初心者
  • ゴルフクラブ→ドライバー

【タグ】

  • マナー
  • 接待
  • 初心者

だんだんと、タグを使うべきかカテゴリを使うべきか混乱してきますし、分類も増えます。 このように長年ブログを運用していくと、「なんかうまくカテゴリを整理できていないな」「タグが多くて選びづらいな」と思ったことがあるはずです。

まさにこのような問題に対処するために、カスタムタクソノミーが存在します。

カスタムタクソノミーの使い方

カスタムタクソノミーは、前出したように、情報の分類を自由に作っていける機能です。 分類をカスタムできるから、カスタム分類(タクソノミー)と言われます。

階層化(hierarchical)してカテゴリのようにも使えますし、階層化せずタグのような分類も作ることができます。

※カテゴリとタグの違いがわからない人はこちらもご覧ください。

カスタムタクソノミーを使った場合の投稿画面の変化

たとえば先ほどの例で考えます。

【カテゴリ】

  • レッスン
  • ゴルフコラム
  • 初心者
  • ゴルフクラブ→ドライバー

上記では、どれがメインカテゴリか分かりづらい上に、サブカテゴリも増えたら記事の投稿画面もごちゃごちゃしますよね。

ところがカスタム分類で作ると、投稿画面で選ぶのがとてもわかりやすく選べるようになります。 先に画面を見て頂いた方が早いので、お見せします。

 

普通は「Categories」しか表示されていないですが、その下に「道具」「性別」などの分類が表示され、それぞれ選べるようになっています。

  • 道具
  • 性別
  • レベル
  • 年代
  • ゴルフウェア

カスタム分類を使うと、このような分類を無限に作っていけるのです。 だいぶ情報が整理されて、投稿がやさしくなると思いませんか?

カスタムタクソノミーを使うメリットとデメリット

上記で見て頂いた投稿画面がやさしくなる以外にも、カスタムタクソノミーには様々なメリットがあります。

メリット

  • カテゴリーの一覧で表示されない隠れた分類をシステム的にもつことができる
  • それぞれ独自のテンプレートをあてやすくなる
  • 検索条件を柔軟にプログラムしやすくなる
  • 投稿画面がやさしくなる
  • ユーザーにわかりやすいUIを提供できる

一言でいうと「情報をきれいに分類し、個別に細かくプログラムで管理できる」ことが主なメリットです。

一方、もちろんデメリットもあります。

デメリット

  • カテゴリ系の一覧記事にはそのままでは表示されない(つまりカテゴリ系の関数{get_the_categoryなど}ではデータが取得できない)
  • 汎用ではarchive.phpテンプレートが適用されるが、category系とは違う関数を追加で組み込まなくてはいけない
  • 上記の流れからもわかるように、基本システムがわかる人でないと使いづらい

デメリットは、メリットの裏返しで、「個別管理する手間とプログラム量が増える」ということです。

カテゴリー、タグ、カスタムタクソノミー、どれを使うべきか?その判断基準

結論からいうと下記の判断基準がよいと思います。

【WordPressのシステムにあまり詳しくない人】

  • カスタム分類(タクソノミー)は基本的に使わない
  • 基本的に、タグも使わない。全部カテゴリで作る方向で考える
  • タグを使うのは、上記カテゴリを横断する必要のある分類のみで使う

カテゴリでも工夫すればいろいろ対応はできますので、基本はカテゴリを使います。 タグは階層化ができない上に、増えてくるとカオスになるので、なるべく増やさず「カテゴリを横断する必要がある場合」にうまく使うようにします。

ただサブカテゴリも含めてカテゴリが100以上できそうな場合は、やはりカスタム分類があった方が綺麗にまとまりますので、その場合はシステムに強い人と一緒に作る方がいいかも知れません。

【WordPressの関数が(なんとなくでも)わかる人】

  • ユーザが読みたくなるような記事の分類はカテゴリを使う
  • 上記のカテゴリを横断する分類やシステム的な分類は、カスタム分類を使う
  • タグも情報が混沌としていくので基本的には使わない。カスタム分類を使う

カテゴリはマーケティング目的、カスタム分類はシステム目的で使う

カテゴリはユーザーが読みたくなるような記事の分類に使います。近いイメージでいうと「サイドメニューに出したいメニュー(サブカテゴリも含む)」です。例えばゴルフで言うと「レッスン」や「マナー」、「ゴルフ場レビュー」といった分類が該当します。

上記のようにカテゴリを使うと、以下のメリットを享受できます。

  • いつも通りカテゴリを使うので初期構築が簡単になる
  • パーマリンクの%category%にもうまく対応できる
  • カテゴリを使う前提のプラグインにも対応できる

多くのウェブサイトは「記事を読んでもらう」ことが主目的ですので、カテゴリはユーザー目線(マーケティング目的)で作るというのがポイントです。

そこまでで基礎を構築した上でカスタム分類を追加すれば、将来の拡張にも柔軟に対応できます。

つまりスモールスタートをする人には特に向いている考え方です。余談ですが、私はこの考え方が一番好きです。

一方デメリットとして、プログラムを組むときには「この時はカテゴリ系の関数」「この時はカスタム分類の関数」と意識的に切り替えねばならず、統一したコードにならないので、プログラマが混乱しやすいというのがあります。

【WordPressを細かくカスタマイズしたい人】

  • カテゴリやタグは使わず、最初から全てカスタムタクソノミーを使う
  • つまり、カテゴリやタグ系の関数は使わず、最初から全てのテンプレートを0から作る

すべてカスタム分類で作ると、同じルールと同じカスタム分類系の関数を適用できるので、プログラムに統一感が出るのが一番のメリットです。

デメリットとしては、最初の構築に手間がかかるのと、%category%をパーマリンクで使えなくなること。また投稿の画面もカテゴリを使用しなくなるので、一般の人にはわかりづらい投稿画面になります。

つまり標準と違うことをするので、その分、運用で考えなければいけないことと、使えないプラグインが増えたり、ユーザー教育の手間が増えます。

判断の基準になるもの

標準で用意されているカテゴリーやタグと、カスタム分類の主な違いは下記になります。

  カテゴリ タグ カスタム分類
よく使われるカテゴリ系の関数が使えるか ×
ネット上の情報の多さ ×
適用されるテンプレート category.php  tag.php taxonomy.php 
パーマリンク設定のカスタマイズ %category%で対応  ※通常使わない 標準では非対応 
対応しているプラグイン  多い 多い 少ない

上記の違いを考慮すると、なるべくカテゴリやタグを基本路線として使った方が、ネット上の情報も多くサイト構築が容易なため、上述の判断になっています。

カスタムタクソノミーのテンプレート

カスタム分類のテンプレート

カスタムタクソノミーでは、下記の順番でテンプレートがあたります。 {taxonomy}は分類名のslugで、{term}はターム名のslugです。 例えば性別(sex)というカスタム分類を作った場合は、{taxonomy}がsexで、{term}はwomanになります。

  1. taxonomy-{taxonomy}-{term}.php
  2. taxonomy-{taxonomy}.php
  3. taxonomy.php
  4. archive.php
  5. index.php

▼参考
タクソノミーテンプレート -WordPressCodex日本語版

カスタム分類(タクソノミー)のURL

カスタム分類のURL(パーマリンク)はどうなるか?

カスタムタクソノミーのアーカイブ(記事一覧)を出力するURLは、基本的に下記のルールで適用されます。

example.com/{taxonomy}/{term}/

注意点としては、階層化されていたとしてもそれは反映されません。

× example.com/area/tokyo/shibuya/
example.com/area/shibuya/

記事のURLはどうなる?

記事自体のURLは、カスタムタクソノミーに属していてもいなくても関係なく、WordPress標準のパーマリンクの設定が有効になります

それら標準のパーマリンクを変更したい場合は大抵プラグインが出ていますが、私は基本的にプラグインはなるべく使わない方がよいと思っています。 なぜなら、脆弱性のもとになったり、WordPressのバージョンアップで動かなくなったり、動きが重くなったりするからです。

そこで、そもそもパーマリンクを変えるべきなのか?ということを下記項で考えてみます。

SEO対策として、カテゴリ構造とパーマリンク(URL)はどうするべきか?

カスタム分類は、前出の通りパーマリンク設定の対象外です。問題はカテゴリです。

カテゴリを作る場合、パーマリンクに/%category%/%post%/とカテゴリを入れるべきかどうかは、悩む人も多いと思います。 なぜ悩むかというと、まずパーマリンク(URL)のディレクトリがSEOに効くと言われているからですね。

しかしそれは昔の話。たしかに200以上あるといわれているSEOファクターの一つでありますが、その効果はほとんどありません。そんなことより今のGoogleに対しては、ユーザーの好む内容の濃いページを作る方がはるかに効果的です。

複数カテゴリを設定した時、パーマリンクの制御は難しい

WordPressの標準機能では、複数カテゴリを指定した場合、記事のパーマリンクで使われている%category%には、「一番初期にできたカテゴリ(IDが若いカテゴリ)」が選択されます。標準ではカスタマイズ不可です。

どうしてもカスタマイズしたい場合、function.phpでやろうとするとかなり複雑になるので(※)、プラグインを使うのがオススメですが、たくさんのプラグインをいれると問題が発生します。

一番のオススメは、後述しますがYoast SEOプラグインを使うことです。

※ WordPressのパーマリンク処理は、基本的にDBのwp_optionsテーブルに入っている値をみながら行われます。それらを書き換えるには仕組みを理解しなくてはなりません。

■ WordPressのパーマリンク処理の参考になる記事

▼WordPress の表示ロジックを理解する
www.prime-strategy.co.jp/2499/

▼wordpressで謎の転送処理されているのを突き止める
aulta.co.jp/2017/08/15/3805.html

▼WordPressに独自リライトルールと独自URLパラメータの追加(wprewrite/wp_query) rensrv.com/wp/apps-and-sitemap/prepare-app/add-rewrite-rules/

ディレクトリのユーザビリティについて

SEO以外のパーマリンクのメリットを考えると、ユーザーにとってわかりやすいという利点はあります。 例えば、下記の例では、ディレクトリ構造をみれば「タワーレコード渋谷店」がどこにあるか、よりわかりやすくなります。

例)
○ http://example.com/area/tokyo/shibuya/towerrecord-shibuya
△ http://example.com/shibuya/towerrecord-shibuya

しかし、今どきのスマホで見るユーザーはURLを見ないので、あまり意味をなさないです。かつ上記のような階層化されたURLにこだわるためには、プラグインなども入れなければいけなく、それでサイトの表示速度が遅くなったらトータルではマイナスかも知れません。

総じてユーザビリティのためだけにディレクトリ構成にこだわる必要性は低いです。

パンくずナビ(breadcrumb)の重要性

GoogleはURLのディレクトリ構成よりも、パンくずのリンク構造の方を重視します。つまり、ディレクトリは割とどうでもよく、それよりパンくずをしっかり考えた方がメリットがあるのですね。

ですからYoast SEOなどのプラグインは、複数カテゴリを選んだ場合に、メインカテゴリを選べるようになっており、パンくずもうまく制御できるようになっています。

結論:記事のパーマリンクにカテゴリを含めるか否か?

上記を踏まえ、私は、下記の判断で良いと思っています。

  1. 基本的に記事のパーマリンク(URL)にはカテゴリを含めない
  2. もしカテゴリを含めるならば、Yoast SEOプラグインをいれて、メインカテゴリを設定して運用する
  3. そもそもパーマリンクより、パンくずナビを優先する

記事のパーマリンクは標準の%postname%がよいと思います。カテゴリを含める必要はありません。

一方で、やはり含めたいという判断をされる場合。

SEOだけのために多くのプラグインを入れると脆弱性のもとになるので、あまりオススメできません。メジャーであるYoast SEOプラグインさえ入れれば、カテゴリを意識したパーマリンクとパンくずを設定してくれますので(パンくずはYoastSEOの関数を使う必要があります)安心です。

なお、Yoast SEOプラグインは、上記にかかわらず、様々なSEO補助機能があるので自分でプログラムをガリガリ書くのがメンドクサイ人にはお勧めです。

カスタムタクソノミーの一覧の取得方法(関数)

まず、関数をご紹介する前に、そもそも、データ上は、カテゴリもタグもカスタムタ分類(クソノミー)もほぼ一緒の扱い、つまり同じwp_term関連のTableに保存されています。 従って、カスタムタクソノミーは、それらTableのデータを扱う、よりWPのネイティブに近い関数を使って制御します。

関数は二種類にわかれる

関数はタクソノミー(taxonomy)に関するものと、ターム(term)に関する2種類にわかれます。

例えば、「女子向けゴルフおすすめファッション!」という記事があり、それが「性別」というタクソノミー(分類)の「女性」というタームに所属しているとして説明します。

タクソノミーに関する関数は少ない。

タクソノミー(分類)に関する関数は少な目です。その理由は、そもそも利用機会が少ないからだと思われます。

例えば上記の記事中で「性別」という言葉を使う機会など、めったにないですよね。だいたいタクソノミー名が必要な場合とは、サイドメニューに表示するか、何かバックグラウンドで処理をする時に必要かぐらいです。

以下に代表的な関数をリストアップします。

▼投稿オブジェクトからタクソノミーオブジェクトを取得
get_object_taxonomies( $object, $output );

▼検索条件を指定してタクソノミーオブジェクトを取得
get_taxonomies( $args, $output, $operator ) 

おわかりのように、タクソノミーに関する関数は、get_object_taxonomiesなどのようにtaxonomyという言葉が入っています。他にもいくつかありますので、詳しくは上記リンクを押してみてください。

タームに関する関数は多い

タクソノミーと違い、タームに関する関数は結構多いです。その理由は「女性」というタームに所属している記事一覧を表示したかったり、記事が所属しているタームを表示したいというニーズが結構多いからだと思われます。

以下に代表的な関数をリストアップします。

▼idからtermオブジェクトを取得
get_term( $term, $taxonomy, $output, $filter )

▼slug名からtermオブジェクトを取得
get_term_by( $field, $value, $taxonomy, $output, $filter )

▼ある任意の投稿に含まれるtermオブジェクトを取得
get_the_terms( $id, $taxonomy) 

その他にもいろいろあります。詳しくは上記のリンク先をご覧ください。

タクソノミー一覧取得で使える関数と、投稿(single.php)で使える関数

カテゴリなどでもそうですが、タクソノミーでも「タクソノミーテンプレート(taxonomy.php)で使えるもの」と「投稿(single.php)で使えるもの」の二種類にわかれます。

投稿(single.php)だと投稿IDが確定しているので、その投稿が属するタクソノミーをシンプルに取得できるような関数が用意されています。こちらもどこかで分類して提示したいと思います。

カスタムタクソノミーを作るためのプラグイン

カスタムタクソノミーを作りたい場合、function.phpに細かい定義を直接書き込むこともできます。 しかし定義項目が意外と多いですし、URLなども制御したい場合はいちいち調べながら進めなければいけないため、設定しやすいプラグインを使ってしまうのも手です。 

メジャーで私も使っているのはCustom Post Type UIです。これを使っていて困ったことはないです。 使い方はインターネットで検索するとたくさん出てきますし、ヘルプも充実してるのでここでは割愛します。

最新のおすすめプラグインはこちら
Web運用本の著者にも聞いた!WordPressサイトで絶対導入すべきおすすめプラグイン3選と注意するポイント【2021年版】

まとめ

この記事では、カスタム分類(タクソノミー)について、情報をまとめました。

カスタム分類を使える(WordPressの関数がわかる)人であれば、結論として、

カテゴリはマーケティング目線の分類で使って、他はカスタムタクソノミーで作る。そしてYoastSEOプラグインを入れる

ということがオススメです。

カスタムタクソノミーを使うと、できる幅が拡がるので、ぜひチャレンジしてみてください。

【基礎知識】カテゴリとタグの違いとは?

付録的な情報ですが、カテゴリとタグの違いがわからない人は、カスタムタクソノミーを使う前に基本をおさえておきましょう。

実は、カテゴリとタグは、記事を分類するという意味では、一緒の機能です。でも2つ存在しています。なぜでしょうか?

両方使ってみると感覚的にわかると思いますが、タグは、分類するだけ。一方でカテゴリは「サブカテゴリ」を作ることができます。つまり階層化できるのです。

階層化の例は、百科事典を思い出してみるとわかりやすいでしょう。哺乳類→ネコ科→ライオンのように階層化して整理してあげるとわかりやすくなります。 一方で、タグは階層化できない分類に適しています。先ほどの例でいえば「ひげ」とか「かわいい」といったタグが考えられます。

実際に投稿画面でも、カテゴリ設定画面は階層化がわかりやすく表示されます。一方でタグは多くの中から選ぶような画面になっています。

このように分類する手法は「階層化するか否か」で2つにわかれます。

なお階層化のことを英語でhierarchicalと言います。カスタム分類の設定では、分類を階層化するか否かを選ぶことができますが、その時によくこの「hierarchical」という言葉が出てきますので、覚えておきましょう。

丸山 耕二
この記事を書いた人: 丸山 耕二

ウェブ担当者通信の発起人。
株式会社ウェブジョブズ代表。
コンサルティングの他、ウェブ担当者教育などにも力を入れ、株式会社インプレスビジネスメディア社の運営するウェブ担当者フォーラムにて「誰もが受けたい!アクセス解析5 分クリニック」を連載。
著書に無料でできる! 世界一やさしいGoogle Analytics アクセス解析入門(秀和システム)
WPプラグインQA Heatmap Analyticsのプロダクトマネージャー