「お知らせとブログがごちゃごちゃして見づらい」「商品ページだけきれいに並べたい」そんなときによく出てくるのが、WordPressのカスタム投稿です。
私も案件でサイト設計をするときは、ほとんど毎回カスタム投稿タイプを使いますが、最初は名前からしてちょっと難しそうに感じると思います。
先に結論を言うと、WordPressのカスタム投稿をうまく使うと「情報が整理されていて、更新もしやすいサイト」が作れます。
WordPressのカスタム投稿とは?基本とイメージ

ここでは、WordPressのカスタム投稿がどんな仕組みなのか、通常の投稿との違いやイメージをざっくり固めていきます。コードの話に入る前に、まずは感覚ベースで理解しておきましょう。
カスタム投稿タイプのざっくりイメージ
カスタム投稿タイプは、簡単に言うと「投稿」「固定ページ」に続く、用途別の投稿の箱です。ブログ記事はブログ、お知らせはお知らせ、商品は商品といった具合に、種類ごとにきれいに分けて管理できます。
イメージしやすいように、通常の投稿とWordPressのカスタム投稿をざっくり比較してみます。
| 種類 | 主な用途 | URLの例 | 管理画面での見え方 |
|---|---|---|---|
| 投稿 | ブログ・お知らせなど | /blog/sample-post | 「投稿」メニュー |
| 固定ページ | 会社情報・お問い合わせ | /about /contact | 「固定ページ」メニュー |
| カスタム投稿 | 事例・商品・FAQなど | /works/○○ /product/○○ など | 「事例」「商品」など専用メニュー |
カスタム投稿を作ると、管理画面の左メニューに「商品」「制作事例」などの専用メニューが増えます。これだけでも、編集する側から見るとかなり見通しのよいサイトになります。
カスタム投稿が向いているサイトの例
私が実務で「ここはカスタム投稿で分けた方がいいな」と感じるのは、次のようなケースです。
- コーポレートサイト
- お知らせ
- 実績・制作事例
- 採用情報
- FAQ(よくある質問)
- 店舗サイト・サービスサイト
- メニュー一覧
- スタッフ紹介
- 店舗一覧
- 商品・サービス系サイト
- 商品一覧
- 導入事例
- 料金プラン
一方で、雑記ブログのように「ほとんどの記事が同じ種類」といったサイトでは、無理にカスタム投稿を増やしすぎると、編集側がかえって迷子になることもあります。種類がはっきり分かれている情報があるかどうかを、まずは考えてみるとよいです。
カスタム投稿を使うメリット・デメリット
WordPressのカスタム投稿を使う主なメリットは、次のようなものがあります。
- 情報を種類ごとに分けられるので、管理画面がすっきりする
- 専用の一覧ページや詳細ページを作りやすい
- REST API やブロックエディターと組み合わせやすい
- 絞り込み検索など、将来の拡張に対応しやすい
その一方で、注意しておきたい点もあります。
- 設計をなんとなくで始めると、あとから整理し直すのが大変
- テンプレートやテーマの仕組みを少し理解する必要がある
- プラグインを増やしすぎると、どこで何をしているか分かりづらくなる
私の感覚としては、「カスタム投稿を使った方が長期的に運用しやすいサイト」が多いです。ただ、やりすぎると逆に複雑になるので、そのバランスをこの記事を通して一緒に整えていきましょう。
WordPressでカスタム投稿を作る2つの方法

ここからは、WordPressでカスタム投稿を実際に作るときの大きな選択肢を整理します。プラグインで作るか、コードで作るかの2パターンがあり、それぞれ向いている人が違います。
プラグインでカスタム投稿を作る場合の特徴
一番よく使われるプラグインは「Custom Post Type UI(CPT UI)」というプラグインです。管理画面からポチポチ設定するだけで、カスタム投稿タイプやカスタムタクソノミー(独自カテゴリ)を作ることができます。
まず、プラグインとコードの違いをざっくり整理しておきます。
| 方法 | 難易度 | 向いている人 | 主なメリット | 主な注意点 |
|---|---|---|---|---|
| プラグイン(CPT UIなど) | 低い | コードに自信がない人 | 画面操作だけでカスタム投稿を作成できる | 設定が増えると画面が少し複雑になる |
| functions.phpにコードを書く | やや高い | 開発案件・子テーマで管理したい人 | バージョン管理しやすく柔軟にカスタマイズできる | コードのミスで不具合が出ることがある |
プラグインで作る良さは、とにかく「失敗しにくい」ことです。スラッグやラベルを入力して保存すれば、すぐに管理画面にカスタム投稿が表示されます。「まずはカスタム投稿ってどんなものか体験したい」という方は、プラグインから入るのがおすすめです。
functions.phpにコードを書いてカスタム投稿を登録する流れ
コードでカスタム投稿を作る場合は、テーマの functions.php や専用のプラグインに register_post_type という関数を書きます。ざっくりとした流れは次の通りです。
- 子テーマを用意する(親テーマを直接さわらないため)
- functions.php を開く
- init フックで register_post_type を呼び出す関数を書く
- ラベルやスラッグ、supports などの配列を設定する
- 管理画面やサイト側で表示を確認する
コードはイメージとして、次のような形です。
add_action( 'init', 'create_news_post_type' );
function create_news_post_type() {
register_post_type( 'news', array(
'label' => 'お知らせ',
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
) );
}
細かい引数の意味は後のセクションで整理しますが、ひとまずこのくらい書ければ、カスタム投稿タイプとしては十分スタートラインに立てます。
どちらの方法を選ぶべきかの目安
ここで一度、自分がどちらの方法から始めるべきかイメージしてみましょう。
| あなたの状況 | おすすめの方法 | 一言メモ |
|---|---|---|
| PHPはほとんど触ったことがない | プラグイン | まずは CPT UI で感覚をつかむと安心です |
| クライアント案件での利用がメイン | コード(functions.php) | バージョン管理しやすく、環境差異に強いです |
| テーマや機能を自分でしっかりいじりたい | コード+必要に応じてプラグイン併用 | ベースはコード、補助的にプラグインを使うイメージです |
私の実感としては「最初はプラグインで試して、慣れてきたらコードに移行する」という流れが、一番ストレスが少ないと思います。
プラグインでWordPressカスタム投稿を作成する手順

ここでは Custom Post Type UI を例に、カスタム投稿タイプの作り方を具体的に見ていきます。管理画面だけで作業できるので、まずはここから触ってみるのがおすすめです。
Custom Post Type UIをインストールする手順
大まかな流れは次の通りです。
- プラグイン新規追加画面で「Custom Post Type UI」と検索する
- インストールして有効化する
- 管理画面左メニューに「CPT UI」が追加される
- 「投稿タイプの追加と編集」からカスタム投稿を作成する
CPT UI で最初に触る画面は、ざっくり次のような項目です。
| 項目 | 例 | ポイント |
|---|---|---|
| 投稿タイプスラッグ | news works product など | 英小文字のみ。あとから変えると URL も変わる |
| 投稿タイプラベル | お知らせ 事例 商品 など | 管理画面メニューに表示される名前 |
| 公開設定(public など) | true / false | サイト側に表示するかどうか |
| サポート(supports) | title editor thumbnail など | どの入力項目を使うか |
| REST API に表示(show_in_rest) | true / false | ブロックエディターや API 連携で使いたい場合に有効化 |
最初はスラッグとラベルだけきちんと決めて、その他はほぼ初期設定のままでも大丈夫です。ただ、あとから URL を変えるのは手間が増えるので、スラッグだけは慎重に決めておきましょう。
投稿タイプのスラッグやラベルの決め方
カスタム投稿のスラッグは、URL の一部として使われます。例えばスラッグを news にすると、次のような URL になります。
- 一覧ページの例:/news/
- 記事ページの例:/news/sample-title/
スラッグを決めるときのコツは、次のようなイメージです。
- 英小文字でシンプルにする
- 単数形・複数形はどちらでもよいが、サイト全体で統一する
- 将来増えそうな投稿タイプと被らないようにする
ラベルは、サイトの運用担当者が毎日見る部分なので、日本語で分かりやすくつけておくと親切です。例えば「施工事例」「お客様の声」「製品一覧」など、メニューを見ただけで中身が想像できる名前にしておくと、更新担当の人から喜ばれます。
カスタムタクソノミー(分類)の追加手順
カスタムタクソノミーは、カスタム投稿にぶら下げる「独自のカテゴリーやタグ」のようなものです。例えば「制作事例」というカスタム投稿に対して、業種やエリアごとに分類したいときに使います。
CPT UI での流れは次の通りです。
- 「タクソノミーの追加と編集」を開く
- タクソノミースラッグ(例:industry, area など)を決める
- ラベル(例:業種、エリア)を決める
- 紐づける投稿タイプとして、先ほど作ったカスタム投稿を選ぶ
これで「制作事例」を登録するときに「業種」「エリア」の選択肢を付けられるようになります。分類軸がはっきりしていると、閲覧側の絞り込みや管理側の検索にも役立つので、余裕があれば一緒に設計しておくと便利です。
コードでWordPressカスタム投稿を実装する手順

ここからは functions.php にコードを書いて、カスタム投稿を実装するパターンを見ていきます。少し難易度は上がりますが、慣れると「こういう投稿が欲しい」を自由に形にできて楽しい部分です。
register_post_typeで最低限必要なコード例
先ほど軽く書いたコードを、もう少し整理して見てみます。
add_action( 'init', 'create_news_post_type' );
function create_news_post_type() {
register_post_type( 'news', array(
'label' => 'お知らせ',
'public' => true,
'has_archive' => true,
'show_in_rest' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
) );
}
ポイントは次のあたりです。
- add_action で init のタイミングに処理を登録する
- register_post_type の第一引数がスラッグ(news など)
- 第二引数の配列で、ラベルや公開設定、サポートする機能をまとめて指定する
私も最初は、このコードをコピペしてスラッグとラベルだけ変えるところから始めました。慣れてきたら、少しずつ引数をカスタマイズしていくと理解が深まります。
よく使う主な引数とおすすめ設定
register_post_type には多くの引数がありますが、よく使うのはこのあたりです。
| 引数名 | 役割 | よく使う値・おすすめ |
|---|---|---|
| label | 管理画面で表示される投稿タイプ名 | 日本語で「お知らせ」「制作事例」など |
| public | 公開するかどうか | true にしておくと、一覧ページなども扱いやすい |
| has_archive | 一覧アーカイブページを持つかどうか | true で /news/ のような一覧 URL が作られる |
| rewrite | スラッグなど URL まわりの設定 | array( ‘slug’ => ‘news’ ) のように明示しておくと安心 |
| show_in_rest | REST API やブロックエディターで扱うか | true にするとブロックエディター対応のカスタム投稿になる |
| supports | どの編集機能を使うか | title, editor, thumbnail, excerpt などを状況に応じて選ぶ |
特に、ブロックエディターを使う場合は show_in_rest が重要です。これが true になっていないと、ブロックエディターの対象にならなかったり、外部との連携がしにくくなります。
カスタムタクソノミーをコードで登録するざっくりイメージ
カスタムタクソノミーをコードで登録する場合は、register_taxonomy という関数を使います。流れはカスタム投稿タイプと似ていて、次のような構成です。
- register_taxonomy でタクソノミースラッグやラベルなどを設定する
- どの投稿タイプに紐づけるかを指定する(’news’ や ‘works’ など)
例えば「業種」で分類したい場合は industry というスラッグのタクソノミーを作り、news や works などのカスタム投稿に紐づけます。このあたりは、実際の案件やサイト構造に合わせて設計していくと、より使いやすくなります。
カスタム投稿の記事を表示するテンプレートとブロック

カスタム投稿を作っただけでは、まだサイト側にはきれいに表示されません。ここでは、テンプレートファイルやブロックエディターを使って、カスタム投稿の一覧や詳細ページを表示する考え方を整理します。
テンプレート階層でarchiveとsingleを作る考え方
クラシックなテーマの場合、テンプレート階層という仕組みで、どのファイルがどの画面を表示するかが決まります。カスタム投稿タイプに対しては、次のようなファイル名をよく使います。
| ファイル名 | 対象となるページ | 例 |
|---|---|---|
| archive-{post_type}.php | カスタム投稿の一覧ページ | archive-news.php / archive-works.php |
| single-{post_type}.php | カスタム投稿の詳細ページ | single-news.php / single-works.php |
| taxonomy-{taxonomy}.php | カスタムタクソノミーの一覧ページ | taxonomy-industry.php など |
例えば news というカスタム投稿タイプを作ったら、archive-news.php と single-news.php をテーマ内に用意しておく、というイメージです。最初は既存の archive.php や single.php をコピーして、少しずつ中身を変えていくと分かりやすいです。
Query Loopブロックでカスタム投稿一覧を作る手順
ブロックテーマやブロックエディターでは、Query Loop(クエリループ)ブロックを使うと、PHP を書かずにカスタム投稿の一覧が作れます。ざっくりとした手順は次の通りです。
- 一覧を表示したいテンプレートや固定ページを開く
- ブロック追加から「クエリループ」ブロックを選ぶ
- クエリ設定で「投稿タイプ」をカスタム投稿に変更する(news など)
- 必要に応じて並び順や件数を指定する
これだけで、カスタム投稿の記事一覧がブロックとして表示されます。デザインの調整も、クエリループの中に「タイトル」「アイキャッチ」「抜粋」などのブロックを入れ替えるだけなので、コードが苦手な人でも扱いやすいです。
絞り込みや並び替えを入れたカスタム投稿一覧のイメージ
もう一歩踏み込んで、次のような要素を足すと、カスタム投稿の一覧は一気に便利になります。
- 「業種」で絞り込む
- 「エリア」で絞り込む
- 新着順・古い順・ランダムなどで並び替える
コードでしっかり作り込む場合は、WP_Query や pre_get_posts を使って条件を制御します。ブロック中心で作りたい場合は、クエリループを複数用意して「業種ごとのブロック」を並べるなど、画面上の工夫で対応することもできます。
カスタム投稿でよくあるトラブルと対処法

カスタム投稿を触り始めると、最初のうちはいくつかつまずきポイントがあります。ここでは、私もよく相談される代表的なトラブルと、シンプルな対処法をまとめます。
カスタム投稿のページが404になるとき
「カスタム投稿の詳細ページにアクセスすると 404 になる」という相談はよくあります。この場合、まず試してほしいのは次の手順です。
- 管理画面の「パーマリンク設定」を開く
- 何も変更せずに「変更を保存」ボタンを押す
- もう一度カスタム投稿の記事ページにアクセスしてみる
これで直る場合は、パーマリンク設定が反映されていなかっただけです。それでも解決しないときは、次のような点も確認してみてください。
- register_post_type の rewrite 設定が不自然になっていないか
- スラッグを途中で変えていないか
- 同じスラッグの固定ページなどが存在していないか
管理画面にカスタム投稿が表示されないとき
コードでカスタム投稿を作ったのに、管理画面の左メニューに出てこない、というケースもあります。そのときは、次のポイントを見直します。
- register_post_type の public が false になっていないか
- show_ui が false になっていないか
- menu_position が極端な値になっていないか
- add_action のフック名や関数名のスペルミスがないか
CPT UI で作った場合でも、権限設定やロール管理プラグインとの兼ね合いで、特定のユーザーから見えないことがあります。この場合は、一度管理者権限でログインして確認してみると原因が分かりやすいです。
ブロックエディターが使えないとき
カスタム投稿を作ったのに、ブロックエディターではなくクラシックエディターになってしまう、というパターンもあります。代表的な原因は次の通りです。
- show_in_rest が false、または未指定になっている
- Classic Editor 系のプラグインで、投稿タイプごとの設定がされている
- 古いテーマやプラグインがエディターを上書きしている
まずは register_post_type の配列の中に show_in_rest => true が入っているかを確認してみてください。CPT UI の場合は、REST API に表示する設定が ON になっているかをチェックします。
実案件でよく使うWordPressカスタム投稿の設計パターン

ここでは、私が案件でよく使うカスタム投稿のパターンを紹介します。具体例を見ると、自分のサイトでどんなカスタム投稿を作ればいいかイメージしやすくなります。
コーポレートサイトでのカスタム投稿パターン
企業サイトや事務所サイトでは、次のようなカスタム投稿をよく作ります。
| カスタム投稿名 | 主な用途 | よく使うフィールド例 |
|---|---|---|
| お知らせ | ニュース・更新情報 | タイトル、本文、公開日、アイキャッチ |
| 制作事例 | 実績紹介 | タイトル、本文、業種、エリア、画像ギャラリー |
| 採用情報 | 募集要項 | 募集職種、勤務地、給与、応募方法 |
| FAQ | よくある質問 | 質問本文、回答本文、カテゴリ |
コーポレートサイトでカスタム投稿を使うと、運用担当者が「お知らせだけ」「採用だけ」といった単位で編集しやすくなります。トップページや各ページに表示する情報も投稿タイプごとに切り分けられるので、デザインの自由度も上がります。
商品・サービス紹介でのカスタム投稿パターン
商品やサービスを扱うサイトでは、通常の投稿だけで管理するより、カスタム投稿に分けた方が分かりやすいことが多いです。
- 商品(product)
- 価格
- 仕様
- 対象者
- 画像ギャラリー
- 導入事例(case など)
- 導入企業名
- 業種・規模
- 導入前の課題
- 導入後の効果
商品自体はカスタム投稿、ノウハウ系の記事は通常の投稿、といった役割分担にしておくと、サイト全体の設計が整理されます。商品一覧ページも product というカスタム投稿だけをループさせればよいので、管理もしやすいです。
メディアサイト・ブログのカスタム投稿パターン
メディア寄りのサイトでも、カスタム投稿はよく使われます。
- コラム・読み物と、ニュース・更新情報を分ける
- 「連載」というカスタム投稿を作り、シリーズものを整理する
- 著者紹介やインタビュー記事を別の投稿タイプにする
例えば「インタビュー記事だけを一覧表示したい」「連載の第1回だけをまとめたい」といった要望も、カスタム投稿とカスタムタクソノミーの組み合わせで実現しやすくなります。運用が軌道に乗ってからでも、既存の記事を新しいカスタム投稿に移すことはできますが、最初にある程度設計しておくと、後の手間がだいぶ減ります。
よくある質問

ここでは、カスタム投稿まわりでよく聞かれる質問に、Q&A 形式で答えていきます。
Q1. WordPressカスタム投稿はSEO的に有利になりますか?
A. カスタム投稿にしただけで SEO が急に有利になる、ということはありません。ただし、カスタム投稿を使って情報を整理すると、次のような効果は期待できます。
- URL 構造が分かりやすくなる(/news/ や /works/ など)
- 関連する記事同士をリンクしやすくなる
- パンくずリストやサイトマップを整えやすくなる
その結果として、検索エンジンから評価されやすいサイトになることは多いです。「SEO のためにカスタム投稿を使う」というより、「分かりやすいサイトを作った結果、SEO 的にもプラスになる」というイメージで考えるとよいと思います。
Q2. プラグインなしでWordPressのカスタム投稿を作っても大丈夫ですか?
A. はい、functions.php に register_post_type を書けば、プラグインなしでもカスタム投稿は作れます。むしろ開発案件では、コードで管理した方が環境ごとの差が少なくて安心な場面もあります。
ただ、PHP に慣れていない場合や、エディター上でのちょっとしたミスが怖い場合は、最初はプラグインで作るのがおすすめです。プラグインで作った設定をあとから参考にして「この設定をコードで書くとこうなるんだ」と学んでいく流れも、十分アリだと思います。
Q3. 既存の「投稿」をWordPressカスタム投稿に変えた方がいいですか?
A. すべてを変える必要はありませんが、「明らかに種類が違うもの」はカスタム投稿に分けた方が管理しやすいことが多いです。
例えば次のような場合です。
- ブログ記事とお知らせが混ざっている
- 商品紹介記事が通常の投稿の中に埋もれている
- 制作事例をブログ記事として書いている
こういった情報は、カスタム投稿に分けてあげると閲覧者にも運用者にも親切です。ただし、既存記事をまるごと移行する作業はそれなりに手間がかかるので、新しい記事からカスタム投稿で作り始めて、重要なものだけ順次移行する、といった進め方も現実的です。
まとめ:WordPressカスタム投稿を今日から活用しよう
最後に、この記事のポイントを整理します。
- WordPressのカスタム投稿は、「投稿」「固定ページ」に続く、用途別の投稿タイプです。
- プラグイン(CPT UI)とコード(register_post_type)の2つの作り方があり、最初はプラグイン、慣れたらコードがおすすめです。
- カスタムタクソノミーを組み合わせると、「業種」「エリア」などで絞り込める、便利なサイト構造を作れます。
- テンプレートファイルやクエリループブロックを使えば、カスタム投稿の一覧・詳細を自由にデザインできます。
- よくあるトラブル(404 やエディターの問題)は、パーマリンク設定や show_in_rest の見直しで解決できることが多いです。
今日からの最初の一歩としては、次の流れを試してみてください。
- 自分のサイトで「種類を分けたい情報」を紙やメモに書き出す
- その中からひとつだけ選んで、CPT UI でカスタム投稿を作ってみる
- クエリループブロックやシンプルなテンプレートで一覧ページを作ってみる
この小さな一歩を踏み出すだけで、「ただのブログ」から「整理された Web サイト」へぐっと近づきます。私も最初はドキドキしながらカスタム投稿タイプを作りましたが、一度仕組みを理解してしまえば、WordPress でできることが一気に広がります。ぜひ、自分のサイトでも試してみてください。



