WordPressでカスタム投稿タイプを作成する方法と活用例|functions.phpで簡単追加!

WordPressの管理画面とfunctions.phpのコードを背景にした「カスタム投稿タイプの作り方と活用例」のアイキャッチ画像
WordPressでカスタム投稿タイプを作成・活用する方法を紹介するアイキャッチ画像

WordPressでサイト運営をしていると、「投稿」や「固定ページ」だけでは管理しきれない場面が出てきますよね。
たとえば、以下のようなケースに心当たりはありませんか?

  • 「お知らせ」だけ一覧で表示したい
  • 「商品」や「制作実績」など、独立した投稿管理をしたい
  • 特定の投稿タイプにだけカスタムフィールドを使いたい

そんな時に便利なのが、カスタム投稿タイプ(Custom Post Type)です。
この記事では、functions.phpにコードを追加するだけでできるカスタム投稿タイプの作り方と、活用例をわかりやすく解説します。

カスタム投稿タイプとは?

カスタム投稿タイプとは、WordPressに元々備わっている「投稿(post)」や「固定ページ(page)」とは別に、独自の投稿形式を追加できる機能です。

具体的には、以下のような投稿タイプを追加することができます:

用途投稿タイプ名目的
お知らせnews最新情報や更新通知を管理
商品紹介product商品ごとの詳細ページを作成
実績・制作事例worksポートフォリオとして使用
イベント情報event日時・会場などの管理が便利に

カスタム投稿タイプの作成方法【functions.phpでOK】

基本のコード例

以下のコードを、使用中のテーマまたは子テーマの functions.php に追記します。

function create_custom_post_type()
{
  register_post_type('news', [
    'labels' => [
      'name' => 'ニュース',
      'singular_name' => 'ニュース',
    ],
    'public' => true,
    'has_archive' => true,
    'menu_position' => 5,
    'supports' => ['title', 'editor', 'thumbnail', 'excerpt'],
    'rewrite' => ['slug' => 'news'],
  ]);
}
add_action('init', 'create_custom_post_type');

コードの解説

  • 'news':投稿タイプのスラッグ(管理上のIDのようなもの)
  • 'public' => true:管理画面・サイト両方で利用可能
  • 'has_archive' => true:アーカイブ一覧(例:/news/)を自動生成
  • 'supports':タイトル・本文・アイキャッチ・抜粋などの編集機能を有効化
  • 'rewrite' => ['slug' => 'news']:URLの構造を /news/◯◯ にする

コードを保存した後は、「設定 → パーマリンク → 保存」を必ず実行してください。
これを行わないと、URLが 404 エラーになります。

カスタム投稿タイプの活用例

1. お知らせ一覧ページを作る

カスタム投稿タイプを追加すると、自動的に /news/ というアーカイブページが生成されます。
このページをカスタマイズしたい場合は、テーマフォルダに archive-news.php を作成します。

<?php get_header(); ?>
<h1>ニュース一覧</h1>
<?php if (have_posts()): while (have_posts()): the_post(); ?>
  <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
  <p><?php the_excerpt(); ?></p>
<?php endwhile; endif; ?>
<?php get_footer(); ?>

さらに、個別ページ用に single-news.php を作れば、通常の投稿とは異なるデザインにすることも可能です。

2. カスタムタクソノミーと組み合わせる

カスタム投稿タイプは、独自のカテゴリやタグ(=カスタムタクソノミー)と組み合わせることで、分類機能も強化できます。

たとえば、商品投稿タイプに「ジャンル」や「ブランド」などの分類を追加可能です。

register_taxonomy('weather', 'news', [
'label' => '天気',
'hierarchical' => true,
'public' => true,
'rewrite' => ['slug' => 'weather'],
]);

3. トップページなどで最新情報として表示

トップページに「最新のお知らせ」を表示したい場合は、get_posts() を使って以下のように呼び出します。

カスタム投稿タイプの注意点

  • パーマリンク設定を保存し直す:追加直後は404になるため注意
  • スラッグの命名には注意post, page などの予約語は使わない
  • 管理画面に表示されない場合show_uishow_in_menu を明示的に指定する必要あり

まとめ

カスタム投稿タイプを使うことで、WordPressサイトの構造をより柔軟に・直感的に設計できます。

特に中〜大規模なWebサイトや、複数のコンテンツ種別を扱う必要があるプロジェクトでは、「投稿」「固定ページ」だけでは限界があります

ぜひ、自作テーマやクライアント案件に取り入れてみてください!

関連記事