WordPressでカスタム投稿タイプ(Custom Post Types, CPT)を作成することは、サイトの管理やコンテンツの構造をより柔軟にするための重要な手段です。この記事では、WordPressでカスタム投稿タイプを作成する方法を、基本的な概念から実際のコードまで、包括的に解説します。
1. カスタム投稿タイプとは?
カスタム投稿タイプは、WordPressのデフォルトで提供される「投稿(post)」や「ページ(page)」以外のコンテンツタイプを作成できる機能です。たとえば、ブログ記事とは異なる形式のコンテンツを作成したい場合に使用します。例えば、イベント、ポートフォリオ、レビューなど、特定のタイプのコンテンツを管理するために便利です。

2. カスタム投稿タイプを作成する理由
WordPressはもともとブログ記事を作成するためのプラットフォームですが、カスタム投稿タイプを使用することで、サイトのさまざまなニーズに合わせたコンテンツを管理できるようになります。カスタム投稿タイプを作成する理由として、以下のような点が挙げられます。
-
異なるコンテンツタイプを分類して管理できる。
-
カスタム投稿タイプ専用のテンプレートを作成できる。
-
管理画面で特定のコンテンツだけを表示しやすくする。
-
独自のフィールドを追加して、データ構造を整理できる。
3. カスタム投稿タイプの作成方法
WordPressでは、カスタム投稿タイプを作成するために、register_post_type
関数を使用します。この関数をテーマのfunctions.php
ファイルに追加することで、新しい投稿タイプを登録できます。
3.1 基本的なコード例
以下は、functions.php
に追加する基本的なコードです。このコードは、「映画」というカスタム投稿タイプを作成するものです。
phpfunction create_movie_post_type() {
$args = array(
'labels' => array(
'name' => '映画',
'singular_name' => '映画',
'add_new' => '新規追加',
'add_new_item' => '新しい映画を追加',
'edit_item' => '映画を編集',
'new_item' => '新しい映画',
'view_item' => '映画を表示',
'search_items' => '映画を検索',
'not_found' => '映画が見つかりません',
'not_found_in_trash' => 'ゴミ箱に映画が見つかりません',
'all_items' => 'すべての映画',
'menu_name' => '映画',
),
'public' => true,
'has_archive' => true,
'show_in_rest' => true, // Gutenbergエディターを有効にする
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), // 使いたいフィールドを指定
'rewrite' => array( 'slug' => 'movies' ), // URLスラッグを設定
);
register_post_type( 'movie', $args );
}
add_action( 'init', 'create_movie_post_type' );
3.2 コードの説明
-
labels
配列:カスタム投稿タイプの管理画面で使用されるラベルを設定します。 -
public
:true
に設定すると、このカスタム投稿タイプがフロントエンドと管理画面の両方で公開されます。 -
has_archive
:true
に設定すると、カスタム投稿タイプにアーカイブページ(一覧ページ)を作成できます。 -
show_in_rest
:Gutenbergエディターを使用する場合、これをtrue
に設定します。 -
supports
:カスタム投稿タイプがサポートする機能を指定します(タイトル、本文、サムネイル、カスタムフィールドなど)。 -
rewrite
:カスタム投稿タイプのURL構造を設定できます。ここでは「movies」というスラッグを使用しています。
4. カスタム投稿タイプの表示
カスタム投稿タイプを作成したら、その投稿タイプに対応するテンプレートファイルを作成する必要があります。WordPressでは、カスタム投稿タイプ専用のテンプレートを作成することができます。
4.1 シングルページのテンプレート
カスタム投稿タイプ「movie」のシングルページ(個別表示)を作成するためには、single-movie.php
というテンプレートファイルをテーマディレクトリに作成します。このファイル内で、映画に関連する情報を表示するコードを記述します。
php get_header(); ?>
class="movie-content">
<h1>php the_title(); ?>h1>
<div class="movie-thumbnail">
php the_post_thumbnail(); ?>
div>
<div class="movie-description">
php the_content(); ?>
div>
div>
php get_footer(); ?>
4.2 アーカイブページのテンプレート
カスタム投稿タイプのアーカイブページを作成するためには、archive-movie.php
というテンプレートファイルを作成します。このファイルで、映画の一覧を表示するコードを記述します。
php get_header(); ?>
class="movie-archive">
<h1>映画一覧h1>
php if ( have_posts() ) : ?>
<ul>
php while ( have_posts() ) : the_post(); ?>
<li>
<a href="php the_permalink(); ?>">php the_title(); ?>a>
li>
php endwhile; ?>
ul>
php else : ?>
<p>映画がありません。p>
php endif; ?>
div>
php get_footer(); ?>
5. カスタムフィールドの追加
カスタム投稿タイプに独自のフィールド(カスタムフィールド)を追加することもできます。例えば、映画のリリース日や評価など、特定のデータを管理するためにカスタムフィールドを使います。
5.1 カスタムフィールドの追加
カスタム投稿タイプでカスタムフィールドを使用するには、WordPressの標準機能である「Advanced Custom Fields(ACF)」プラグインを利用することが一般的です。このプラグインを使うことで、管理画面から簡単にフィールドを追加・編集できます。
6. カスタム投稿タイプの管理画面のカスタマイズ
カスタム投稿タイプを管理画面で使いやすくするために、カスタムカラムを追加したり、表示順を変更することができます。例えば、映画の投稿に「監督」や「ジャンル」などの情報を追加することができます。
6.1 カスタムカラムの追加
以下は、映画のカスタム投稿タイプに「監督」と「公開日」のカスタムカラムを追加する例です。
phpfunction add_movie_columns($columns) {
$columns['director'] = '監督';
$columns['release_date'] = '公開日';
return $columns;
}
add_filter( 'manage_movie_posts_columns', 'add_movie_columns' );
function movie_column_content($column, $post_id) {
if ($column == 'director') {
echo get_post_meta($post_id, 'director', true);
} elseif ($column == 'release_date') {
echo get_post_meta($post_id, 'release_date', true);
}
}
add_action( 'manage_movie_posts_custom_column', 'movie_column_content', 10, 2 );
7. まとめ
カスタム投稿タイプは、WordPressサイトを柔軟にカスタマイズし、特定のニーズに対応するための強力なツールです。これを使用することで、コンテンツを効率的に管理できるようになります。また、カスタム投稿タイプには専用のテンプレートやカスタムフィールドを追加することができ、さらに管理画面を使いやすくするためのカスタマイズも可能です。
このガイドを参考にして、自分のサイトに最適なカスタム投稿タイプを作成し、管理機能を強化していきましょう。