この章では、カスタム投稿タイプとカスタムタクソノミーを学びます。
WordPressの標準投稿だけでは管理しづらいコンテンツは、専用の投稿タイプを作ると整理しやすくなります。
カスタム投稿タイプとは
カスタム投稿タイプは、WordPressに独自のコンテンツ種別を追加する仕組みです。
たとえば、次のような内容に使います。
- 制作実績
- お客様の声
- スタッフ紹介
- FAQ
- セミナー
- 商品情報
標準の「投稿」と混ぜると管理しづらい内容は、カスタム投稿タイプに分けます。
投稿との違い
標準投稿は、お知らせやブログのような時系列コンテンツに向いています。
カスタム投稿タイプは、サイト固有の情報を管理する時に向いています。
| 内容 | 管理方法 |
|---|---|
| お知らせ | 投稿 |
| ブログ | 投稿 |
| 制作実績 | カスタム投稿タイプ |
| スタッフ | カスタム投稿タイプ |
| FAQ | カスタム投稿タイプまたは固定ページ |
どちらでも作れる場合でも、運用しやすい方を選びます。
カスタムタクソノミーとは
タクソノミーは、投稿を分類する仕組みです。
標準では、カテゴリーやタグがあります。
カスタムタクソノミーを作ると、独自の分類を追加できます。
たとえば、制作実績に対して次のような分類を作れます。
- 業種
- 制作種別
- 使用技術
- エリア
カスタム投稿タイプとタクソノミーを組み合わせることで、管理画面と一覧ページが整理しやすくなります。
register_post_type
カスタム投稿タイプは、register_post_type()で登録できます。
function my_theme_register_post_types() {
register_post_type( 'works', array(
'label' => '制作実績',
'public' => true,
'has_archive' => true,
'menu_position'=> 5,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'rewrite' => array( 'slug' => 'works' ),
) );
}
add_action( 'init', 'my_theme_register_post_types' );これで、管理画面に「制作実績」が追加されます。
supportsでは、タイトル、本文、アイキャッチなど、使う機能を指定します。
register_taxonomy
カスタムタクソノミーは、register_taxonomy()で登録できます。
function my_theme_register_taxonomies() {
register_taxonomy( 'works_category', 'works', array(
'label' => '実績カテゴリー',
'public' => true,
'hierarchical' => true,
'rewrite' => array( 'slug' => 'works-category' ),
) );
}
add_action( 'init', 'my_theme_register_taxonomies' );hierarchicalをtrueにすると、カテゴリーのような階層分類になります。
falseにすると、タグのような分類になります。
テーマかプラグインか
カスタム投稿タイプは、テーマに書くことも、プラグインに分けることもできます。
実務では、サイトのデータ構造に関わるものはプラグインに分けることがあります。
テーマを変更しても、制作実績やスタッフの投稿タイプを残したいからです。
| 書く場所 | 向いている内容 |
|---|---|
| テーマ | 表示に強く依存する小さな設定 |
| プラグイン | サイトのデータ構造として残したい設定 |
この判断は案件によって変わります。
最初はテーマに書いて学び、実務では分離も検討します。
テンプレート
カスタム投稿タイプには、専用テンプレートを作れます。
制作実績の投稿タイプがworksなら、次のようなファイル名を使います。
archive-works.php
single-works.php
taxonomy-works_category.php一覧はarchive-works.php、詳細はsingle-works.phpです。
分類一覧はtaxonomy-works_category.phpで表示できます。
この章のまとめ
- カスタム投稿タイプは、独自のコンテンツ種別を追加する仕組み
- 制作実績、スタッフ、FAQなどはカスタム投稿タイプに向いている
- カスタムタクソノミーは、独自の分類を追加する仕組み
register_post_type()とregister_taxonomy()で登録できる- サイト固有のデータ構造は、プラグインに分けることも検討する