Lesson 5
カスタム投稿タイプとカスタムタクソノミー
目次
Lesson 5
Chapter 1
カスタム投稿タイプとカスタムタクソノミー
WordPressは、カスタム投稿タイプとカスタムタクソノミーという機能を利用することで、コンテンツ管理を柔軟に行うことができます。
カスタム投稿タイプ(Custom Post Type)という機能では、独自の投稿タイプを作成することを可能にしており、 カスタムタクソノミー(Custom Taxonomy)は、カスタム投稿タイプや既存の投稿タイプに対して、カテゴリーやタグのような独自の分類を追加することができます。
こういった機能を活用することで、独自のコンテンツを効率的に管理し、サイトの情報設計やSEO対策を最適化することができます。
ここでは、カスタム投稿タイプとカスタムタクソノミーのメリットについて詳しく解説します。
サイトのコンテンツ管理を向上させたい方や、WordPressの機能をより活用したい方にとって、必読の内容となっています。

Lesson 5
Chapter 2
カスタム投稿タイプ(CPT)・カスタムタクソノミーとは
「カスタム投稿タイプ(CPT)・カスタムタクソノミーとは」とは、WordPressのカスタマイズ機能の一つで、独自に投稿タイプやカテゴリーやタグのような分類法を作成することができます。
これにより、ブログ記事以外のコンテンツを追加することができ、より柔軟なウェブサイトを作成できます。
WordPressの機能をフルに活用し、サイトの拡張性を高めたい方には必見です。
カスタム投稿タイプ(CPT)
カスタム投稿タイプ(Custom Post Type, CPT)は、WordPressで新しい投稿タイプを定義する機能のことを指します。
WordPressのデフォルトでは、投稿や固定ページなどが標準的な投稿タイプとして定義されていますが、CPTを使うことで、独自の投稿タイプを追加することができます。
CPTを定義するためには、functions.phpファイルやプラグインで以下のようにコードを書きます。
functions.php
function create_post_type() {register_post_type( 'book',
array('labels' => array('name' => __( 'Books' ),'singular_name' => __( 'Book' )),
'public' => true,'has_archive' => true,));}
add_action( 'init', 'create_post_type' );
上記の例では、bookという投稿タイプを定義しています。
register_post_type() 関数で、投稿タイプ名や表示名、アーカイブページの有無などを指定することができ、Booksという表示名で投稿の一覧を表示するアーカイブページが自動生成されます。
また、CPTを使うことで、WordPressで独自のコンテンツを追加することができます。
例えば、書籍や映画などのレビューサイトを運営する場合には、bookやmovieなどの投稿タイプを定義して、それぞれのコンテンツを管理することができます。
さらには、CPTはカスタムフィールドやタクソノミーなどの機能と組み合わせることができ、より高度で複雑なカスタマイズが可能となります。

Lesson 5
Chapter 3
デフォルト投稿タイプ
「デフォルト投稿タイプ」とは、WordPressの基本的な機能の一つであり、WordPressで最初から用意されている投稿タイプのことです。
これは、記事やブログのエントリーなどを投稿するために使われるもので、WordPressのインストール時に自動的に作成されます。
基礎的な機能ですが、どのように動作しているのかを解説していきます。
投稿(post)
WordPressにおけるデフォルトの投稿タイプは「post(投稿)」です。
投稿タイプとは、コンテンツを分類するための機能であり、WordPressには投稿以外にもページ、添付ファイル、メニューなどの投稿タイプがあります。
主にブログ記事やニュース記事などの形式の記事に使用されます。
タイトル、本文、カテゴリー、タグ、投稿日時、投稿者などのフィールドを持ち、これらのフィールドを設定することで、記事を細かく分類し、管理しやすくすることができます。
また、WordPressの投稿はコメントやトラックバックを受け付けることができるため、読者との交流が可能です。
トラックバックとは
トラックバックとは、ブログやウェブページで他のウェブページへのリンクを設置した場合、そのリンクを辿られた場合に、相手側のウェブページに対して自分のウェブページがリンクされていることを自動で通知する仕組みのことを指します。
WordPressの管理画面から作成、編集、削除することができ、投稿にはステータス(公開、下書き、予約投稿など)やパーマリンクなどの設定も可能です。
デフォルトの投稿タイプである投稿には、投稿一覧ページや投稿詳細ページのテンプレートが用意されているため、テーマを変更した場合でも、投稿が正しく表示されるようになっています。
また、WordPressのプラグインによっては、投稿タイプを拡張することも可能です。
固定ページ(page)
WordPressにおける「固定ページ(page)」とは、コンテンツを投稿するための機能のひとつで、 ブログの記事のように時系列に並べられる投稿(post)と異なり、ある一定のページに関する情報を提供するためのページです。
固定ページは、ウェブサイトのトップページや、サービス紹介ページ、会社概要ページ、お問い合わせページなど、ブログ記事とは異なるコンテンツを掲載する場合などに用いられます。
また、固定ページは、ウェブサイトのナビゲーションメニューに表示され、ユーザーが直接アクセスすることができます。
デフォルト投稿タイプの固定ページには、以下のような特徴があります。
- パーマリンク(固定ページのURL)は、デフォルトで「サイトURL/ページスラッグ」です。
- 記事のようなカテゴリーやタグは存在せず、投稿日時も設定できません。
- 固定ページの一部には、特定のテンプレートファイルを適用することが可能です。
- 固定ページには、記事とは異なり、コメント欄があらかじめ非表示です。。
たとえば、トップページ用のテンプレートファイルや、お問い合わせページ用のテンプレートファイルを作成し、それを特定の固定ページに適用することができます。
必要であれば、テンプレートファイルをカスタマイズすることで、コメント欄を表示するように変更することもできます。
固定ページは、WordPressの管理画面から「ページを追加」ボタンをクリックすることで、作成することができます。
また、既存の固定ページを編集する場合は、「ページ」メニューから該当するページを選択し、「編集」をクリックします。
添付ファイル(attachment)
WordPressのデフォルト投稿タイプの1つである添付ファイル(attachment)は、メディアライブラリで管理されているファイルを表します。
添付ファイルには、画像、動画、音声ファイル、PDF、ドキュメントなど、さまざまな形式のファイルをアップロードできます。
投稿やページと同様に、添付ファイルにもタイトル、キャプション、説明、カテゴリー、タグなどのカスタムフィールドの設定が可能です。
また、添付ファイルにはサムネイル画像が自動的に生成され、表示されます。
添付ファイルは、投稿やページに挿入されたり、ウィジェット、ショートコード、PHP関数を使って表示させたりすることができ、 例えば、投稿内に画像を挿入する場合は添付ファイルから画像を選択し、文章に挿入するといったことです。
また、カスタム投稿タイプの投稿に添付ファイルを追加することもできます。
これらのファイルは、メディアライブラリで編集や削除ができます。
ただし、添付ファイルが使用されている投稿やページがある場合、添付ファイルを削除すると、それらのコンテンツからも削除されるので注意が必要です。
リビジョン(revision)
WordPressには、投稿やページの編集履歴を保存する「リビジョン」という機能があるので、 どの編集者がいつ編集を加えたのかを把握することができます。
これは、WordPressが自動的に作成するデフォルトの投稿タイプ「revision(リビジョン)」として実装されており、編集を保存する際に自動的に作成されます。
例えば、投稿やページを編集して保存すると、その編集内容が新しいリビジョンとして保存されます。
また、投稿やページを削除すると、その投稿やページに関連するすべてのリビジョンも削除されます。
リビジョンは、投稿やページの管理画面で確認することができ、 投稿やページを編集する際には、管理画面の右側にある「リビジョン」ボックスから以前の編集内容を表示したり、元に戻したりすることができます。
また、リビジョンの保存件数は、管理画面の「設定」→「投稿」から変更することができます。
デフォルトでは、最新の25件が保存されますが、必要に応じて増やすことができます。
ただし、リビジョンを多く保存するとデータベースの容量を圧迫するため、必要以上に保存することは避けるべきです。
ナビゲーションメニュー(nav_menu_item)
ナビゲーションメニューとは、WordPressのデフォルト投稿タイプの一つで、ナビゲーションメニューに表示されるメニューアイテムを表します。
具体的には、WordPressの管理画面で作成されたカスタムメニューに表示されるリンクやメニューアイテムに対応する投稿タイプです。
メニューを作成する際には、この投稿タイプのインスタンスが作成され、各メニューアイテムの情報が格納されます。
インスタンスとは
インスタンス(Instance)とは、プログラムを実行するために必要なデータを格納する領域のことを指します。
この投稿タイプには、デフォルトで以下のようなフィールドが用意されています。
- menu_order
- menu_item_parent
- title
- url
- type
- object_id
メニューアイテムの並び順を表す整数値です。
メニューアイテムの親要素を表す整数値です。
子メニューがない場合は0。
メニューアイテムのタイトルを表すテキストです。
メニューアイテムのURLを表すテキストです。
メニューアイテムの種類を表すテキストです。
通常は「custom」となります。
メニューアイテムが参照する投稿のIDです。
通常は0です。
これらのフィールドを編集することで、ナビゲーションメニューに表示されるメニューアイテムの情報を変更することができます。
また、この投稿タイプを利用して、カスタムメニューにカスタム投稿タイプのアーカイブページへのリンクなどを追加することもできます。
カスタムCSS(custom_css)
WordPressのバージョン4.7から、カスタムCSSという投稿タイプが追加されました。
これは、テーマのスタイルシートを編集せずに、サイト全体または特定のページにCSSを追加できるようにするためのもので、サイトの外観を自由にカスタマイズできるメリットがあります。
カスタムCSSは、WordPressのダッシュボード内で「外観」>「カスタマイズ」>「追加のCSS」でアクセスでき、CSSを編集・保存することができます。
また、他の投稿タイプと同様に、REST APIを使用してカスタムCSSを取得したり更新したりすることもできます。
投稿タイプとしては非常にシンプルなものとなっており、このフィールドにはCSSのルールを書くことができます。
ただし、テーマが使用するCSSに影響を与えるため、CSSの書き方には注意が必要です。
チェンジセット(customize_changeset)
WordPressのカスタマイズ機能には、「カスタマイズ」画面で行った設定を保存する「チェンジセット」というものがあります。
チェンジセットは、デフォルトで「customize_changeset」という投稿タイプで管理されています。
カスタマイズ画面で行った設定内容が保存されており、例えばテーマカスタマイズ画面で行った色変更や、ウィジェットの追加・変更、メニューの追加・変更などが含まれます。
投稿タイプとしては特別なもので、通常の投稿としては公開されない代わりにカスタマイズ画面でプレビューするためのリンクが生成されます。
また、複数のチェンジセットを作成することができ、必要に応じてチェンジセットを切り替えることができます。
さらには、WordPressカスタマイズAPIを使用するテーマやプラグインの開発にも利用されます。
APIを使用することで、カスタマイズ画面で設定された内容をデータベースに保存し、必要に応じて取得することができます。

Lesson 5
Chapter 4
カスタム投稿タイプを設定する
WordPressには、投稿記事や固定ページといったデフォルトの投稿タイプがありますが、カスタム投稿タイプを作成することで、独自の投稿タイプを定義することができます。
この記事では、WordPressのカスタム投稿タイプの設定方法について紹介します。
- functions.phpファイルを開きます。
- register_post_type()関数を使用して、新しいカスタム投稿タイプを登録します。
- functions.phpファイルを保存し、WordPressの管理画面に移動します。
- 「投稿」の代わりに、「カスタム投稿タイプ」のメニュー項目が表示されることを確認します。
- カスタム投稿タイプを追加する場合は、「カスタム投稿タイプ」のメニューから「新規追加」をクリックし、必要な情報を入力してください。
- カスタム投稿タイプをテンプレートに表示するには、カスタム投稿タイプの名前に基づくテンプレートファイルを作成する必要があります。
このファイルは、テーマ(themes)のフォルダ内に配置されています。
この関数には、カスタム投稿タイプの名前、オプションなどが含まれます。
以下は、例です。
php
function custom_post_type() {
$args = array( 'public' => true, 'label' => 'Custom Post Type',
'supports' => array( 'title', 'editor', 'thumbnail' ),
'taxonomies' => array( 'category', 'post_tag' ),
'rewrite' => array( 'slug' => 'custom-post-type' ),
);
register_post_type( 'custom_post_type', $args );
}
add_action( 'init', 'custom_post_type' );
この例では、新しいカスタム投稿タイプの名前は「custom_post_type」としています。
カスタム投稿タイプには、タイトル、本文、アイキャッチ画像のフィールドをサポートし、カテゴリーとタグのタクソノミーを使用します。
タクソノミーとは
タクソノミーは、WordPressのプラグインやカスタムテーマなどで自由に作成できる分類方法です。
また、投稿のパーマリンクは「example.com/custom-post-type/post-name/」のようになります。
新しい投稿を追加するには、「カスタム投稿タイプを追加」をクリックします。
たとえば、カスタム投稿タイプが「books」である場合、single-books.phpというファイルを作成する必要があります。
これらの手順を実行することで、WordPressサイトにカスタム投稿タイプを追加できます。

Lesson 5
Chapter 5
カスタムタクソノミーを設定する
カスタムタクソノミーは、カテゴリーやタグのように、投稿やページを分類する方法を提供します。
使用することで、ユーザーは投稿やページをより簡単に見つけることができ、SEO対策にも役立ちます。
また、カスタム投稿タイプと組み合わせることで、非常に柔軟な構造を持つWordPressサイトを作成することができます。
WordPressでカスタムタクソノミーを設定するには、以下の手順に従います。
- functions.phpファイルを開くか、テーマまたはプラグインのルートディレクトリに新しいファイルを作成します。
- register_taxonomy()関数を使用して、新しいカスタムタクソノミーを登録します。
- 関数には、タクソノミーの名前、表示名、オプション(説明、階層、親タームなど)を指定する必要があります。
以下は、例として、"Books"という名前のカスタム投稿タイプを作成し、"genre"というカスタムタクソノミーを登録するコード例です。
php
function create_book_genre_taxonomy() {
$labels = array(
'name' => __( 'Genres', 'textdomain' ),
'singular_name' => __( 'Genre', 'textdomain' ),
'search_items' => __( 'Search Genres', 'textdomain' ),
'all_items' => __( 'All Genres', 'textdomain' ),
'parent_item' => __( 'Parent Genre', 'textdomain' ),
'parent_item_colon' => __( 'Parent Genre:', 'textdomain' ),
'edit_item' => __( 'Edit Genre', 'textdomain' ),
'update_item' => __( 'Update Genre', 'textdomain' ),
'add_new_item' => __( 'Add New Genre', 'textdomain' ),
'new_item_name' => __( 'New Genre Name', 'textdomain' ),
'menu_name' => __( 'Genres', 'textdomain' ),
);
$args = array(
'hierarchical' => true, // trueの場合はカテゴリータイプ、falseの場合はタグタイプのタクソノミー
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ), // タクソノミーのパーマリンクで使用するスラッグ
);
register_taxonomy( 'genre', 'book', $args );
}
add_action( 'init', 'create_book_genre_taxonomy', 0 );
この例では、"genre"というタクソノミーが作成され、書籍("book")というカスタム投稿タイプに関連付けられます。
タクソノミーは親子関係がある(階層的)場合には、'hierarchical'引数をtrueに設定します。
また、タクソノミーのスラッグは'rewrite'引数で指定できます。
