成果物をまとめて確認する
[成果物]WordPressで独自の分類軸を作る!タクソノミーで投稿管理を拡張
【WordPressで独自の分類軸を作る!タクソノミーで投稿管理を拡張】の成果物です。投稿の学びを終えた時点の構成を一覧でご確認いただけます。
前回の記事では、WordPressのテンプレート階層を活用してアーカイブページを統合管理する方法を学習しました。
これまでの学習でカテゴリーとタグを使って投稿を分類し、それらを「ターム」と呼ぶことも学びました。しかし、サイトの内容によってはカテゴリーとタグの2つの分類軸だけでは不十分な場合があります。
例えば、企業のお知らせサイトで「内容による分類(新店舗、イベント、休業など)」と「場所による分類(東京店、大阪店など)」の両方で投稿を分類したい場合、カテゴリーとタグだけでは対応が困難です。
今回は、カテゴリーやタグとは別の独自の分類軸「タクソノミー」を作成して、より柔軟な投稿管理を実現します。
今回の目標
register_taxonomy
関数の使い方をマスターする目次
タクソノミー(Taxonomy)とは、投稿を分類するための「分類システム」そのものを指します。WordPressには標準で「カテゴリー」と「タグ」という2つのタクソノミーが用意されていますが、独自のタクソノミーを作成することで、さらに多角的な分類が可能になります。
これまでの学習で、カテゴリーやタグの個々の項目を「ターム」と呼ぶことを学びました。タームとタクソノミーの関係を整理しましょう。
カテゴリータクソノミーの場合
タグタクソノミーの場合
つまり、タクソノミーは「箱」、タームは「箱の中身」と考えると理解しやすいでしょう。
レストランチェーンのお知らせサイトを運営している場合を考えてみましょう。
カテゴリー お知らせの種類
タグ お知らせの特徴
独自タクソノミー 対象店舗
このように、カテゴリーやタグとは全く別の切り口で投稿を分類できるのがタクソノミーの特徴です。
WordPressのタクソノミーには2つの種類があります。
使用例:地域分類
関東
├── 東京都
│ ├── 渋谷区
│ └── 新宿区
└── 神奈川県
├── 横浜市
└── 川崎市
使用例:特徴分類
個室あり、禁煙、WiFiあり、駐車場完備、テラス席
どちらのタイプにするかは、タクソノミー作成時の設定で決定します。
独自タクソノミーを作成するには、functions.phpファイルでregister_taxonomy
関数を使用します。
まずは最小限の設定でタクソノミーを作成してみましょう。
add_action('init', function() {
register_taxonomy(
'tax-store', // タクソノミーのスラッグ
'post', // 適用先の投稿タイプ
array(
'hierarchical' => true, // カテゴリー型にする(親子関係を許可)
)
);
});
PHPadd_action('init', function() {
// タクソノミー登録処理
});
PHPadd_action
:WordPressの特定のタイミングで処理を実行するための仕組みinit
:WordPressが初期化される際に実行されるタイミングfunction()
:実行する処理を無名関数として定義ようするに「WordPressが初期化される際に実行されるタイミングでタクソノミーを管理画面に追加する」と言うことになります。
タクソノミーのスラッグは、WordPressシステム内でタクソノミーを識別するための重要な名前です。設定時に注意すべき点があります。
タクソノミーのスラッグは、WordPress内で必ず一意(唯一)である必要があります。他のタクソノミー、投稿タイプ、ページスラッグと重複してはいけません。
WordPressには既に使用されている予約語があり、これらは使用できません。
category
(カテゴリータクソノミー)tag
(タグタクソノミー)post
(投稿タイプ)page
(固定ページタイプ)今回は「店舗(store
)」のタクソノミーを作成しますが、単純にstore
とするのではなく、tax-
というプレフィックスを付けてtax-store
としました。
この命名には2つのメリットがあります。
命名例
// 良い例(プレフィックス付き)
'tax-store' // 店舗タクソノミー
'tax-region' // 地域タクソノミー
'tax-level' // レベルタクソノミー
// 避けるべき例
'store' // シンプルすぎて重複リスクあり
'category' // WordPress予約語
'tag' // WordPress予約語
実際に使いやすいタクソノミーを作成するために、詳細な設定を行います。
add_action('init', function() {
register_taxonomy(
'tax-store', // タクソノミーのスラッグ
'post', // 適用先の投稿タイプ
array(
'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' => '店舗', // 管理メニューでの表示名
),
'hierarchical' => true, // 階層設定
'public' => true, // 公開設定
'show_in_rest' => true, // REST API対応
'show_admin_column' => true, // 管理画面表示
'show_in_quick_edit' => true, // クイック編集対応
'show_in_nav_menus' => true, // メニュー表示
'query_var' => 'store', // クエリ変数名
'rewrite' => array( // パーマリンク設定
'slug' => 'store', // URLのスラッグ
'with_front' => true, // 投稿の先頭スラッグを付ける
),
)
);
});
PHPfunctions.phpに上記コードを追加後、以下の確認を行ってください。
各パラメータの意味と効果を詳しく見ていきましょう。
true
:カテゴリーのような親子関係を持つ階層構造false
:タグのような平坦な構造true
:Webページでのクエリやアーカイブページが利用可能false
:管理画面でのみ利用可能URLクエリで使用される変数名を指定します。例:?store=shibuya
slug
:URLで使用されるスラッグ名with_front
:投稿のパーマリンク構造の先頭部分を含めるかどうか今回の設定では以下のようになります。
'rewrite' => array(
'slug' => 'store', // URLのスラッグ
'with_front' => true, // 投稿の先頭スラッグを付ける
),
PHPこの設定により、店舗タクソノミーのアーカイブページは以下のURLでアクセスできます。
http://sample.local/news/store/渋谷店
http://sample.local/news/store/新宿店
http://sample.local/news/store/池袋店
with_frontパラメータの詳細
true
:/news/store/店舗名
(投稿パーマリンク設定の先頭部分/news/
を含める)false
:/store/店舗名
(投稿パーマリンク設定の先頭部分を含めない)サイト全体の一貫性を保つため、通常はtrue
に設定します。
実際にタクソノミーを使用するため、テストデータを作成しましょう。
今回の記事では、WordPressで独自のタクソノミーを作成する方法を学習しました。
tax-
などの接頭辞を付けて重複を回避項目 | カテゴリー | タグ | タクソノミー |
---|---|---|---|
階層構造 | あり | なし | hierarchical で切り替え |
作成方法 | 標準機能 | 標準機能 | register_taxonomy で追加 |
スラッグ | category | tag | 任意 |
用途 | 主分類 | 補助分類 | 任意の分類軸 |
今回はタクソノミーの作成と設定方法を学習しました。
次回は、作成したタクソノミーをWebページで表示する方法を学習します。具体的には
タクソノミーの真価は、作成後にいかに効果的に表示・活用するかにあります。次回の実装方法をお楽しみに!
この記事で作成した成果物は、以下のページでまとめて確認することができます。
WordPressのテンプレート階層を活用して、カテゴリー、タグ、日付のアーカイブページを一つのファイルで統合管理する方法を解説します。重複するコードを整理し、保守性の高い効率的なテンプレート設計を実現するテクニックを学習できます。
WordPressで作成した独自タクソノミーを実際にWebページで表示・活用する方法を詳しく解説します。既存知識を活用して効率的に学習できます。お知らせページでの一覧表示、店舗別投稿ページの作成、複数タクソノミー運用時のテンプレート設計まで、実践的な実装方法を段階的に習得できる内容です。
WordPressを効率よく確実に学ぶためには、学習の順序が大切です。知識が自然に積み上がるよう、学習ステップに沿って記事を順番に並べています。
学習ストーリー第37話まで掲載中