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

今回は、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管理画面のダッシュボードには、「投稿」とは別に、カスタム投稿タイプの「書籍紹介」が作成されます。そして、その中にカスタムタクソノミーの「書籍カテゴリー」、「書籍タグ」のメニューが作成されます。

リライトルールの更新
作成したカスタム投稿タイプ・カスタムタクソノミーでは、パーマリンクを変更する設定が行われていないため、リライトルールを更新する必要があります。
リライトルールの更新については、以下のリンク先を参考にしてみてください。
ソースコードの説明
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 日本語版