✅【超わかりやすく解説!】WordPressのタームとタクソノミーって何?初心者でもできるカスタムタクソノミーの作り方
- 1. 「タクソノミー?ターム?なんだかむずかしそう…」😵
- 2. 📋 この記事でわかること
- 3. タクソノミーとタームって何?超シンプル解説!🤔
- 4. カテゴリーとタグの違い:実はタクソノミーの種類が違う!📊
- 5. なぜカスタムタクソノミーが必要なの?🧐
- 6. プラグインでカンタン!カスタムタクソノミーの作り方🔧
- 7. 上級者向け:コードでカスタムタクソノミーを作る方法📝
- 7.1. 🔷 階層型タクソノミー(カテゴリータイプ)のコード例
- 7.2. 🔷 非階層型タクソノミー(タグタイプ)のコード例
- 7.3. 🔷 register_taxonomy関数の主な引数
- 7.4. 🔷 主な設定オプション
- 8. カスタムタクソノミーをテーマに表示する方法🎨
- 8.1. 🔷 単一投稿ページでタクソノミーのタームを表示
- 8.2. 🔷 サイドバーウィジェットでタクソノミーの一覧を表示
- 8.3. 🔷 特定のタームに属する投稿一覧を表示
- 8.4. 🔷 よく使うタクソノミー関連の関数
- 9. よくある疑問と回答❓
- 10. 実際のユースケース:カスタムタクソノミーの活用例💼
- 11. まとめ:タクソノミーとタームをマスターしよう!🎉
- 12. ✉️ あなたのリクエスト教えてください!
「タクソノミー?ターム?なんだかむずかしそう…」😵
WordPressでサイト制作をしていると、「タクソノミー」「ターム」という言葉をよく目にしますよね。でも正直、この用語って初心者にとってはかなり混乱しがちです!
この記事では、タクソノミーとタームの概念を超わかりやすく解説し、実際にカスタムタクソノミーを作る方法までご紹介します。ぜひ最後まで読んでください!💪
📋 この記事でわかること
- タクソノミーとタームの正体と関係性
- カテゴリーとタグの違い(実はどちらもタクソノミーだった!)
- カスタムタクソノミーが必要な場面と具体的な使用例
- プラグインを使った簡単なカスタムタクソノミーの作り方
- コードを使ったカスタムタクソノミーの作り方(コピペでOK)
- タクソノミーをテーマに表示する方法
タクソノミーとタームって何?超シンプル解説!🤔
🔷 まずは例え話で理解しよう
タクソノミーとタームの関係を理解するには、「引き出し」と「中身」のたとえが分かりやすいです:
- タクソノミー = 分類するための「引き出し」や「箱」
- ターム = その引き出しの「中身」や「ラベル」
例えば、お店で服を分類するとき:
- 「服の種類」という引き出し(タクソノミー)があって
- その中に「Tシャツ」「パンツ」「ジャケット」などのラベル(ターム)がある
🔷 WordPressでの具体例
WordPressでは最初から2つのタクソノミーが用意されています:
| タクソノミー | 説明 | ターム例 |
|---|---|---|
| カテゴリー (category) | 大まかな分類 | 「ニュース」「レシピ」「レビュー」など |
| タグ (post_tag) | 詳細なキーワード | 「初心者向け」「おすすめ」「2025年」など |
つまり、カテゴリーとタグもタクソノミーの一種だったんです!多くの初心者がここで混乱します。
カテゴリーとタグの違い:実はタクソノミーの種類が違う!📊
WordPress標準のタクソノミーである「カテゴリー」と「タグ」には重要な違いがあります:
| 特徴 | カテゴリー | タグ |
|---|---|---|
| 階層構造 | あり(親子関係あり) | なし(フラット) |
| 必須か任意か | 最低1つは必要 | 完全に任意(なくてもOK) |
| 投稿画面での表示 | チェックボックス | テキスト入力 |
| 適した用途 | 大まかな分類 | 詳細なキーワード |
🔷 カテゴリー(hierarchical taxonomy)の例
「料理」カテゴリー
├── 「和食」(子カテゴリー)
│ ├── 「寿司」(孫カテゴリー)
│ └── 「天ぷら」(孫カテゴリー)
└── 「洋食」(子カテゴリー)
├── 「パスタ」
└── 「ピザ」
🔷 タグ(non-hierarchical taxonomy)の例
タグはフラットな構造で、それぞれが独立しています:
「簡単」「10分以内」「子供向け」「ヘルシー」「朝食」「おやつ」
なぜカスタムタクソノミーが必要なの?🧐
WordPress標準のカテゴリーとタグだけでは足りない場合があります。以下に具体的な例を示します。
🔷 レシピサイトの場合
標準タクソノミー:
- カテゴリー:「和食」「洋食」「中華」など
- タグ:「簡単」「ヘルシー」「おもてなし」など
追加したいカスタムタクソノミー:
- 調理時間タクソノミー:「5分以内」「30分以内」「1時間以上」などのターム
- 調理方法タクソノミー:「煮る」「焼く」「蒸す」「炒める」などのターム
- 季節タクソノミー:「春」「夏」「秋」「冬」などのターム
🔷 不動産サイトの場合
標準タクソノミー:
- カテゴリー:「マンション」「一戸建て」「土地」など
- タグ:「駅近」「ペット可」「リフォーム済み」など
追加したいカスタムタクソノミー:
- エリアタクソノミー:「東京」「神奈川」「埼玉」などのターム
- 間取りタクソノミー:「1LDK」「2LDK」「3LDK」などのターム
- 築年数タクソノミー:「新築」「3年以内」「5年以内」などのターム
このように、コンテンツの特性に合わせた独自の分類方法を作れるのがカスタムタクソノミーの魅力です!
プラグインでカンタン!カスタムタクソノミーの作り方🔧
まずは簡単な方法から!プラグインを使ったカスタムタクソノミーの作り方を紹介します。
🔷 準備するもの
- Custom Post Type UIプラグイン(無料)
🔷 手順
- プラグインのインストール:
- 管理画面メニュー → 「プラグイン」→「新規追加」
- 「Custom Post Type UI」で検索してインストール・有効化
- タクソノミーの作成:
- 管理画面メニュー → 「CPT UI」→「タクソノミーを追加」
- 基本設定を入力:
| 設定項目 | 入力例 | 説明 |
|---|---|---|
| タクソノミースラッグ | cooking_time | 英数字とアンダースコアのみ使用可能、必須項目 |
| 複数形ラベル | 調理時間 | 管理画面に表示される名前、必須項目 |
| 単数形ラベル | 調理時間 | 管理画面に表示される名前、必須項目 |
| 接続先の投稿タイプ | 投稿 | どの投稿タイプにこのタクソノミーを使うか |
| 階層構造 | はい/いいえ | カテゴリーのような階層を持つか、タグのような階層なしか |
| URLスラッグ | cooking-time | 公開URLの一部 |
- 保存して完了!
これで管理画面に新しいタクソノミーが追加され、投稿画面で使えるようになります。
上級者向け:コードでカスタムタクソノミーを作る方法📝
プラグインを使わずに、直接コードでカスタムタクソノミーを作ることもできます。テーマのfunctions.phpまたは子テーマに追加します。
🔷 階層型タクソノミー(カテゴリータイプ)のコード例
// カスタムタクソノミー「調理時間」を登録
function create_cooking_time_taxonomy() {
$labels = array(
'name' => '調理時間',
'singular_name' => '調理時間',
'search_items' => '調理時間を検索',
'all_items' => 'すべての調理時間',
'parent_item' => '親の調理時間',
'parent_item_colon' => '親の調理時間:',
'edit_item' => '調理時間を編集',
'update_item' => '調理時間を更新',
'add_new_item' => '新しい調理時間を追加',
'new_item_name' => '新しい調理時間名',
'menu_name' => '調理時間',
);
$args = array(
'hierarchical' => true, // カテゴリータイプ(階層あり)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'cooking-time'),
);
register_taxonomy('cooking_time', array('post'), $args);
}
add_action('init', 'create_cooking_time_taxonomy', 0);
🔷 非階層型タクソノミー(タグタイプ)のコード例
// カスタムタクソノミー「食材」を登録
function create_ingredient_taxonomy() {
$labels = array(
'name' => '食材',
'singular_name' => '食材',
'search_items' => '食材を検索',
'all_items' => 'すべての食材',
'edit_item' => '食材を編集',
'update_item' => '食材を更新',
'add_new_item' => '新しい食材を追加',
'new_item_name' => '新しい食材名',
'menu_name' => '食材',
);
$args = array(
'hierarchical' => false, // タグタイプ(階層なし)
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array('slug' => 'ingredient'),
);
register_taxonomy('ingredient', array('post'), $args);
}
add_action('init', 'create_ingredient_taxonomy', 0);
このコードをコピペして、名前や設定を変更するだけで、独自のカスタムタクソノミーが作れます。コードを使う利点は、プラグインに依存せず、より細かい制御ができることです。
🔷 register_taxonomy関数の主な引数
| 引数 | 説明 |
|---|---|
| 第1引数 | タクソノミースラッグ(一意の識別子) |
| 第2引数 | 接続する投稿タイプ(配列で複数指定可能) |
| 第3引数 | 設定オプション(配列) |
🔷 主な設定オプション
| オプション | 説明 |
|---|---|
| hierarchical | 階層構造をサポートするか(trueでカテゴリー型、falseでタグ型) |
| labels | 管理画面での表示ラベル |
| show_ui | 管理画面に表示するか |
| show_admin_column | 投稿一覧にカラムとして表示するか |
| rewrite | パーマリンク構造 |
カスタムタクソノミーをテーマに表示する方法🎨
カスタムタクソノミーを作成したら、それをテーマに表示してみましょう。
🔷 単一投稿ページでタクソノミーのタームを表示
<?php
// 投稿に設定された「調理時間」タクソノミーのタームを取得して表示
$cooking_times = get_the_terms(get_the_ID(), 'cooking_time');
if ($cooking_times && !is_wp_error($cooking_times)) {
echo '<div class="cooking-time">';
echo '<span class="label">調理時間:</span>';
foreach ($cooking_times as $term) {
echo '<a href="' . get_term_link($term) . '">' . $term->name . '</a>';
}
echo '</div>';
}
?>
🔷 サイドバーウィジェットでタクソノミーの一覧を表示
<div class="widget taxonomy-widget">
<h3 class="widget-title">調理時間で探す</h3>
<ul>
<?php
$terms = get_terms(array(
'taxonomy' => 'cooking_time',
'hide_empty' => true,
));
if (!empty($terms) && !is_wp_error($terms)) {
foreach ($terms as $term) {
echo '<li><a href="' . get_term_link($term) . '">' .
$term->name . ' (' . $term->count . ')</a></li>';
}
}
?>
</ul>
</div>
🔷 特定のタームに属する投稿一覧を表示
<?php
// 「30分以内」タームに属する投稿を取得して表示
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'cooking_time',
'field' => 'slug',
'terms' => '30min',
),
),
);
$query = new WP_Query($args);
if ($query->have_posts()) {
echo '<h2>30分以内で作れるレシピ</h2>';
echo '<div class="recipe-list">';
while ($query->have_posts()) {
$query->the_post();
echo '<div class="recipe-item">';
echo '<a href="' . get_permalink() . '">' . get_the_title() . '</a>';
echo '</div>';
}
echo '</div>';
}
wp_reset_postdata();
?>
🔷 よく使うタクソノミー関連の関数
| 関数 | 用途 |
|---|---|
| get_the_terms() | 投稿に設定されたタームを取得 |
| get_terms() | タクソノミーの全タームを取得 |
| get_term_link() | タームのURLを取得 |
| wp_get_post_terms() | 投稿に紐づくタームを取得 |
| wp_set_post_terms() | 投稿にタームを設定 |
よくある疑問と回答❓
🔷 「カスタムタクソノミーとカスタム投稿タイプの違いは?」
| 項目 | カスタムタクソノミー | カスタム投稿タイプ |
|---|---|---|
| 定義 | コンテンツを「分類する方法」 | コンテンツの「種類」自体 |
| 例 | 「調理時間」「エリア」「サイズ」 | 「レシピ」「物件」「商品」 |
| 用途 | 既存・新規コンテンツの整理 | コンテンツ自体の新規作成 |
カスタム投稿タイプとカスタムタクソノミーは、多くの場合一緒に使われます。例えば、「レシピ」というカスタム投稿タイプを作り、その分類方法として「調理時間」というカスタムタクソノミーを作る、というように。
🔷 「タクソノミーアーカイブって何?」
タクソノミーアーカイブとは、特定のタクソノミーのタームに属する投稿一覧ページのことです。例えば:
https://example.com/category/news/– カテゴリー「ニュース」のアーカイブhttps://example.com/cooking-time/30min/– カスタムタクソノミー「調理時間」の「30分」タームのアーカイブ
これらのアーカイブページのデザインは、テーマファイル taxonomy-{taxonomy}-{term}.php、taxonomy-{taxonomy}.php、taxonomy.php などで制御できます。
🔷 「タームとタグの違いは?」
| 項目 | ターム | タグ |
|---|---|---|
| 定義 | あらゆるタクソノミーの項目 | 非階層型タクソノミー「post_tag」のこと |
| 範囲 | カテゴリー、タグ、カスタムタクソノミーなど全て | タグタクソノミーの中の項目のみ |
つまり「タグ」は「ターム」の一種ということになります。
実際のユースケース:カスタムタクソノミーの活用例💼
🔷 ポートフォリオサイトの場合
カスタム投稿タイプ:「作品」(Portfolio)
カスタムタクソノミー:
| タクソノミー | タームの例 |
|---|---|
| 制作年 | 「2023年」「2024年」「2025年」 |
| クライアント | 「企業A」「企業B」 |
| 技術 | 「WordPress」「JavaScript」「デザイン」 |
🔷 ECサイトの場合
カスタム投稿タイプ:「商品」(Product)
カスタムタクソノミー:
| タクソノミー | タームの例 |
|---|---|
| ブランド | 「ブランドA」「ブランドB」 |
| サイズ | 「S」「M」「L」 |
| 色 | 「赤」「青」「緑」 |
🔷 イベントサイトの場合
カスタム投稿タイプ:「イベント」(Event)
カスタムタクソノミー:
| タクソノミー | タームの例 |
|---|---|
| 開催地 | 「東京」「大阪」「オンライン」 |
| ジャンル | 「音楽」「ビジネス」「IT」 |
| 参加費 | 「無料」「有料」 |
まとめ:タクソノミーとタームをマスターしよう!🎉
この記事では、WordPressのタクソノミーとタームについて解説してきました:
- タクソノミーはコンテンツを分類する「方法」や「箱」
- タームはその分類の中の「項目」や「ラベル」
- カテゴリーとタグも実はタクソノミーの一種
- カスタムタクソノミーを使えば、オリジナルの分類方法を作れる
- プラグインかコードでカスタムタクソノミーを簡単に作成可能
タクソノミーとタームを上手に活用すれば、コンテンツを整理しやすくなり、ユーザーも欲しい情報を見つけやすくなります。サイトの規模が大きくなるほど、適切な分類方法は重要になります!
ぜひあなたのWordPressサイトでも、カスタムタクソノミーを活用してみてください!👍
次回は「カスタムフィールドとカスタムタクソノミーの連携テクニック」について解説する予定です。お楽しみに!
参考リンク
✉️ あなたのリクエスト教えてください!
「この記事わかりやすかった!」
「他にもこんな記事書いてほしい!」
そんな声を、ぜひXのDMで教えてください!😊📩
できるだけリクエストにお応えして、今後の記事作成に活かしていきます!
▶️ Xもフォローしてもらえるとめちゃくちゃ嬉しいです!
コメントを残す