【WordPress】カスタム投稿タイプ・カスタムタクソノミーの作成

WordPressにはブログ等として使用できる「投稿」があり、その投稿それぞれ「カテゴリー」や「タグ」を設定できます。

そのデフォルトである「投稿」とは別に、「カスタム投稿タイプ」を自分自身で作成することが出来ます。

「カスタム投稿タイプ」では、投稿に設定できる「カテゴリー」や「タグ」の代わりとして、「カスタムタクソノミー(カスタム分類)」があり、それも自ら設定できます。

カスタム投稿タイプ・カスタムタクソノミーを使用する例としては、同じWordPressのサイトの中に、「投稿」で書いている記事とは別に、全く違ったジャンルの事を書きたい場合などに使用出来ます・

今回は、そのカスタム投稿タイプ・カスタムタクソノミーを、functions.phpにソースコードを記述して設定する例です。

カスタム投稿タイプ・カスタムタクソノミーを作成する例

カスタム投稿タイプを作成する例

まずは、カスタム投稿タイプを作成する例となります。以下がソースコードの例となり、functions.phpに記述します。

function my_custom_post_type(){
	$labels = array(
		// 投稿タイプの表示名
		'name'          => '書籍の紹介',
		// すべての投稿を表すテキスト
		'all_items'     => '書籍の紹介一覧',
		// 新規追加を表すテキスト
		'add_new_item'  => '新規追加',
		// 編集を表すテキスト 
		'edit_item'     => '編集',
	);
	$args = array(
		// 投稿タイプの翻訳を配列で指定
		'labels'        => $labels,
		// trueの場合は投稿タイプを公開。falseの場合は投稿タイプを公開しない(管理画面からも使用不可)初期値はfalse
		'public'        => true,
		// trueの場合は階層の指定が可能。初期値はfalse
		'hierarchical'  => false,
		// trueの場合はアーカイブを有効にする。初期値はfalse
		'has_archive'   => true,
		// 投稿タイプで追加・編集できる要素を指定。初期値はtitleとeditor
		'supports'      => array('title','editor','thumbnail','author','custom-fields','comments','revisions'),
		// 管理画面で投稿タイプが表示されるメニューの位置。5は「投稿の下」に表示。 デフォルトは「コメントの下」
		'menu_position' => 5,
		// 設定するカスタムタクソノミーを配列で指定。カスタムタクソノミーはregister_taxonomy関数で登録。初期値はタクソノミー無し
		// register_taxonomy_for_object_type() を直接呼び出す代わりに使用可能。
		'taxonomies'    => array('book_category','book_tag'),
	);
	register_post_type('book',$args);
}
add_action('init', 'my_custom_post_type');

カスタムタクソノミーを作成する例

次に、上記で作成したカスタム投稿タイプに、カスタムタクソノミー(カスタム分類)を登録します。以下がソースコードの例となり、functions.phpに記述します。

そして、最後に管理画面の「パーマリンク設定」から「変更保存」を押して更新します。

function my_custom_taxonomy(){
	//カテゴリータイプ(階層あり)のカスタムタクソノミーの登録
	$args = array(
		// カスタムタクソノミーの表示名を指定
		'label'        => '書籍カテゴリー',
		// true なら階層あり。false ならタグ階層なしで初期値は false
		'hierarchical' => true,
	);
	register_taxonomy('book_category','book',$args);
	
	//タグタイプ(階層なし)のカスタムタクソノミーの登録
	$args = array(
		'label'        => '書籍タグ',
		'hierarchical' => false
	);
	register_taxonomy('book_tag','book',$args);
}
add_action('init', 'my_custom_taxonomy');

WordPress管理画面内のダッシュボード

上記、2つのソースコードを、functions.php記述することにより、WordPress管理画面のダッシュボードには、「投稿」とは別に、カスタム投稿タイプの「書籍紹介」が作成されます。そして、その中にカスタムタクソノミーの「書籍カテゴリー」、「書籍タグ」のメニューが作成されます。

WordPress管理画面内のダッシュボードに、カスタム投稿・カスタムタクソノミーが追加された画面
WordPress管理画面内のダッシュボードに、カスタム投稿・カスタムタクソノミーが追加された画面

ソースコードの説明

register_post_type() 関数で投稿タイプを作成

register_post_type() 関数は投稿タイプを作成、変更する関数で、initアクションを使用し呼び出します。 initアクションより前に呼び出すと動作しません。

アクションフックの実行順は以下を参考にしてみてください。

WordPressのアクションフックの種類と実行順 - Qiita

パラメータ

register_post_type( $post_type, $args );
$post_type(必須)
投稿タイプ名を指定(最大 20 文字、大文字や空白は禁止)。初期値はなし。
$args(省略可)
投稿タイプの設定を配列で指定。初期値はなし。

例のソースコードで設定した他にも、パラメータ$args の配列の要素はたくさんあります。関数の詳細など、詳しくは以下のリンク先を参考にしてみてください。

関数リファレンス/register post type - WordPress Codex 日本語版

register_taxonomy() 関数でタクソノミーを登録

register_taxonomy() 関数はタクソノミーの設定を追加、変更する関数で、 init アクションを使用して呼び出します。

パラメータ

register_taxonomy( $taxonomy, $object_type, $args );
$taxonomy(必須)
タクソノミーの名前を指定(英小文字とアンダースコアのみ、32文字以下)。初期値はなし。
$object_type(必須)
タクソノミーを登録するオブジェクトタイプを指定。オブジェクトタイプは WordPress標準の投稿タイプ、または登録したカスタム投稿タイプ。初期値はなし。
$args(省略可)
 タクソノミーの設定を配列で指定。初期値はなし。

例のソースコードで設定した他にも、パラメータ$args の配列の要素はたくさんあります。関数の詳細など、詳しくは以下のリンク先を参考にしてみてください。

関数リファレンス/register taxonomy - WordPress Codex 日本語版

参照サイト・書籍

コメントまたはTwitterで返信

コメントは、以下の項目(*は必須項目)を入力し「コメントを送信」ボタンから送信お願いします。メールアドレスは公開されることはありません。Twitterで返信する場合はコチラから。