WordPressテーマの自作をしなくてはいけない場合、標準で付いている投稿機能とは別で記事を管理したい場面があるかと思います。
例えば、デザイン会社のコーポレートサイトを作りたい場合はブログとは別で『制作実績』という投稿を別々で管理したい場合があるとします。
そんな場合は、WordPressに標準で付いているカスタム投稿タイプという機能を『functions.php』に書くことによって実現することができます。
カスタム投稿タイプとは何か
カスタム投稿タイプとはWordPressに標準に付いている投稿機能とは別のオリジナルの投稿タイプのことを指します。カスタム投稿タイプを作ることで、ブログとは別で独自の投稿を管理することができます。
例えば、Web制作会社のコーポレートサイトをWordPressで実装するという案件があった場合は、ブログの投稿とは別で『制作実績』や『お知らせ』などの投稿画面が欲しいと依頼があった場合などに、このカスタム投稿タイプが使えます。
カスタム投稿タイプの作り方

カスタム投稿タイプの作り方は、インストールしたWordPressのフォルダの中の『wp-content > themes』の中にある『functions.php』というファイルに以下のように記述します。
記述が完了すると上の画像のように『制作実績』『ブログ』『お知らせ』とデフォルトの投稿メニューが消えて、新しいメニューが表示されていることが確認できます。
//デフォルトの投稿メニューを非表示
function hide_menu() {
remove_menu_page( 'edit.php' );
}
add_action( 'admin_menu', 'hide_menu' );
//カスタム投稿タイプを作成
function create_post_type() {
//制作実績
register_post_type( 'works',
array(
'labels' => array(
'name' => __( '制作実績' ),
'singular_name' => __( '制作実績' ),
'all_items' => __( '制作実績一覧' )
),
'public' => true,
'has_archive' => true,
'menu_position' => 5
)
);
//ブログ
register_post_type( 'blog',
array(
'labels' => array(
'name' => __( 'ブログ' ),
'singular_name' => __( 'ブログ' ),
'all_items' => __( 'ブログ一覧' )
),
'public' => true,
'has_archive' => true,
'menu_position' => 5
)
);
//お知らせ
register_post_type( 'news',
array(
'labels' => array(
'name' => __( 'お知らせ' ),
'singular_name' => __( 'お知らせ' ),
'all_items' => __( 'お知らせ一覧' )
),
'public' => true,
'has_archive' => true,
'menu_position' => 5
)
);
}
add_action( 'init', 'create_post_type' );
カスタムタクソノミーとは何か
カスタムタクソノミーとはカスタム投稿タイプに紐ずけるカテゴリーやタグ情報のことを指します。
カスタム投稿タイプを作るだけでは、その投稿に紐づくカテゴリーやタグ情報が作成できないためカスタムタクソノミーを作成しなければいけません。
カスタムタクソノミーはそれぞれの作成したカスタム投稿タイプの中でのみ使用するため、slugの重複などが起こりません。
カスタムタクソノミーの作り方

カスタムタクソノミーの作り方は、カスタム投稿タイプの時と同じく、インストールしたWordPressのフォルダの中の『wp-content > themes』の中にある『functions.php』というファイルに記述します。
記述が完了すると、上の画像のように『制作実績』にホバーすると『制作実績 - カテゴリ』と『制作実績 - タグ』が確認することができます。
//制作実績用のカスタムタクソノミーの作成
function works_taxonomy() {
//制作実績 - カテゴリ
register_taxonomy(
'works-category', //タクソノミー名
'works', //紐付ける投稿タイプ
array(
'label' => '制作実績 - カテゴリ',
'singular_label' => '制作実績 - カテゴリ',
'labels' => array(
'all_items' => '制作実績 - カテゴリ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => true
)
);
//制作実績 - タグ
register_taxonomy(
'works-tag', //タクソノミー名
'works', //紐付ける投稿タイプ
array(
'label' => '制作実績 - タグ',
'singular_label' => '制作実績 - タグ',
'labels' => array(
'all_items' => '制作実績 - タグ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => false
)
);
}
//ブログ用のカスタムタクソノミーの作成
function blog_taxonomy() {
//ブログ - カテゴリ
register_taxonomy(
'blog-category', //タクソノミー名
'blog', //紐付ける投稿タイプ
array(
'label' => 'ブログ - カテゴリ',
'singular_label' => 'ブログ - カテゴリ',
'labels' => array(
'all_items' => 'ブログ - カテゴリ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => true
)
);
//ブログ - タグ
register_taxonomy(
'blog-tag', //タクソノミー名
'blog', //紐付ける投稿タイプ
array(
'label' => 'ブログ - タグ',
'singular_label' => 'ブログ - タグ',
'labels' => array(
'all_items' => 'ブログ - タグ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => false
)
);
}
//お知らせ用のカスタムタクソノミーの作成
function news_taxonomy() {
//お知らせ - カテゴリ
register_taxonomy(
'news-category', //タクソノミー名
'news', //紐付ける投稿タイプ
array(
'label' => 'お知らせ - カテゴリ',
'singular_label' => 'お知らせ - カテゴリ',
'labels' => array(
'all_items' => 'お知らせ - カテゴリ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => true
)
);
//お知らせ - タグ
register_taxonomy(
'news-tag', //タクソノミー名
'news', //紐付ける投稿タイプ
array(
'label' => 'お知らせ - タグ',
'singular_label' => 'お知らせ - タグ',
'labels' => array(
'all_items' => 'お知らせ - タグ一覧'
),
'public' => true,
'show_ui' => true,
'show_in_nav_menus' => true,
'hierarchical' => false
)
);
}
add_action( 'init', 'works_taxonomy' );
add_action( 'init', 'blog_taxonomy' );
add_action( 'init', 'news_taxonomy' );
カスタム投稿タイプのアーカイブページを表示する方法
カスタム投稿タイプを作成したものの詳細ページは表示されるけど、アーカーイブページが表示されない現象が起きてしまう場合があります。
そんな時は、以下の3点を確認して実行してもらえると、カスタム投稿タイプのアーカイブページが表示されます。
- カスタム投稿タイプ用のアーカイブファイルを用意できているか (archive-投稿タイプ.php)
- 『register_post_type』の『has_archive』が『true』になっているか
- パーマリンクを更新しているか (『設定 > パーマリンク設定』で『変更を保持』というボタンを押す)
カスタムタクソノミーのアーカイブページを表示する方法
カスタムタクソノミーを作成したものの詳細ページは表示されるけど、アーカーイブページが表示されない現象が起きてしまう場合があります。
そんな時は、以下の2点を確認して実行してもらえると、カスタムタクソノミーのアーカイブページが表示されます。
- カスタム投稿タイプ用のアーカイブファイルを用意できているか (taxonomy-taxonomy名.php)
- パーマリンクを更新しているか (『設定 > パーマリンク設定』で『変更を保持』というボタンを押す)
まとめ
今回はWordPressに標準で付いている投稿とは別にオリジナルの投稿画面を作る設定について解説してきましたが、いかがでしたでしょうか?
カスタム投稿タイプを作ってみて今まで以上に、制作の幅が広がることを実感したのではないでしょうか?
カスタム投稿タイプとカスタムタクソノミーを使うことによって、ブログ以外にもコーポーレートサイトのように複数のジャンルに別れた投稿を管理できることが分かっていただけたかと思います。
