1. TOP
  2. Wordpress
  3. WordPressにカスタム投稿タイプをプラグインなしで設定する方法

WordPressにカスタム投稿タイプをプラグインなしで設定する方法

カスタム投稿をプラグインなしでの設定方法

カスタム投稿タイプは、「投稿記事ページ」と「固定ページ」にプラスして第3の投稿ページが作成できる機能です。

通常のWordPressサイトは、以下のように「投稿記事ページ」と「固定ページ」が作成できます。

固定ページと投稿記事ページ

これらにプラスして、カスタム投稿タイプがあれば、多様なサイトが制作できます。

カスタム投稿タイプは、1つでも複数でも作成可能です。

WordPressサイトは記事の分類をカテゴリー毎に分けることができますが、様々な種類の記事を取り扱っているとカテゴリー分けが複雑になってきます。

根本的に記事を分けて独立したいのであれば、カスタム投稿タイプは便利です。

WordPressをインストールしたままの状態では、カスタム投稿タイプは使用できません。自分でカスタマイズする必要があります。

主に2種類の方法で実現できます。

  • functions.phpに設定を記述する方法
  • プラグインを使用する方法

カスタム投稿タイプが構築できるWordPressプラグインは、「Custom Post Type UI」と「Types」が有名です。しかし、プラグインに頼るのはメンテナンスやカスタマイズ、細かい設定などが不利になることがあります。

カスタム投稿タイプはサイトの土台ですので、しっかりと自分で制作する方が大切だと思います。

以前、プラグインを使用していた経験がありますが、エラーが起きたり細かいカスタマイズに柔軟性がなかったため、functions.phpで自分で設定をすることが大切だと実感しました。

カスタム投稿タイプを自分で設定するには、ある程度知識は必要ですが、一つ一つ内容を理解して進めていけば実装できます。一度覚えれば後は簡単ですので、是非勉強してください。

この記事では、カスタム投稿タイプをプラグインなしで作成する方法を詳しく解説します。

カスタム投稿タイプの設定方法

カスタム投稿タイプを設定するには、functions.phpにコードを記述する必要があります。

この記事に記載されているサンプルコードを使用すれば簡単ですので参考にしてください。

カスタム投稿タイプを作成するには、「register_post_type」の関数を使用します。各種パラメータも詳しく解説します。

まずは、以下のコードをfunctions.phpに記述します。

function

function部分の「custom_post_type」は独自関数の名前です。

サンプルコードでは、「custom_post_type」にしました。

register_post_type

register_post_typeの部分にある「item」は、カスタム投稿タイプ名です。

作成したいカスタム投稿タイプ名を英単語で記述します。

上記のコードでは、商品に関するカスタム投稿タイプですので、「item」にしました。

それぞれの好みに合わせて、変えてください。

label

管理画面の左メニューに表示される名前です。

メニューの表示名

labels

管理画面に表示される名前ラベルを変更できます。

要素名 設定内容
name カスタム投稿タイプ名の複数形
singular_name カスタム投稿タイプ名の単数形
add_new メニューの「新規 」の位置に表示するラベル
add_new_item カスタム投稿の新規作成ページの左上に表示される部分のラベル
new_item カスタム投稿一覧ページの右上の方にある新規作成部分のラベル
search_item カスタム投稿一覧ページの検索ボタンのラベル
edit_item カスタム投稿編集ページの左上の方にある編集部分のラベル
view_item カスタム投稿編集ページの「〇〇を表示」部分のラベル
not_found カスタム投稿を追加していない状態で、カスタム投稿一覧ページを開いたときに表示するメッセージ
not_found_in_trash カスタム投稿をゴミ箱に入れていない状態で、カスタム投稿のゴミ箱ページを開いたときに表示するメッセージ

新規追加項目のラベル

検索ボタンのラベル

新規作成の名前ラベル

descsiption

カスタム投稿タイプの概要を記述します。特に設定しなくても構いません。

public

サイト運営者が管理画面で記事を書いて公開するようなカスタム投稿タイプを作成するのであれば「ture」にします。

WordPressサイトのプログラム内部で使用するようなカスタム投稿タイプを作成するのであれば、「false」に設定します。

show_ul

管理画面の左メニューにカスタム投稿タイプの新規作成や一覧ページの表示をする場合は、「ture」にします。

「false」に設定すると管理画面から表示されなくなり、操作はできなくなります。

設定を省略した場合は、publicに設定した値と同じになります。

menu_position

管理画面の左メニューでの表示位置を設定します。

「5」であれば、「投稿」下にカスタム投稿タイプが表示されます。

「10」であれば、「メディア」下にカスタム投稿タイプが表示されます。

カスタム投稿タイプの表示位置

menu_icon

管理画面の左メニューに表示されるカスタム投稿タイプのアイコンのURLを指定します。

指定しない場合は、通常の「ピン」柄のアイコンが表示されます。

ピン柄のアイコン

hierarchical

固定ページタイプの親子関係があるカスタム投稿が良いなら「ture」にします。

投稿記事ページタイプの親子関係がないカスタム投稿が良いなら「false」にします。

has_arctive

アーカイブページのような時系列に沿って記事一覧を表示するなら「ture」にします。

例えば、投稿記事ページであれば、トップページで時系列で記事一覧が表示されます。これと同様のシステムにカスタム投稿タイプもなります。

サンプルコードであれば、「http://WordPressサイトのURL/カスタム投稿タイプ名/」でアーカイブページが表示されます。

「has_arctive」を指定しない場合は、「false」になります。

時系列に沿った記事一覧ページ

rewrite

カスタム投稿タイプのパーマリンクの指定をします。

通常は何も指定しなければ「ture」ですので、特に記述する必要はありません。

「ture」であれば、カスタム投稿タイプのパーマリンクは、「http://WordPressサイトのURL/カスタム投稿タイプ名/スラッグ」になります。

なお、WordPressのパーマリンク設定はデフォルト以外しないと正しく設定できません。

サンプルコードを例に挙げれば、カスタム投稿タイプ名は「item」
ですので、次のようなURLになります。

「http://WordPressサイトのURL/item/スラッグ」

更に、「rewrite => array(‘slug’ => ‘〇〇’)」と指定すれば、「http://WordPressサイトのURL/○○/スラッグ」にできます。つまり、カスタム投稿タイプ名の部分をオリジナルに変更できます。

supposts

記事の編集や新規作成画面に設置するシステムを設定します。

要素名 設定内容
title タイトル
editor 本文
author 作成者
thumbnail アイキャッチ画像
excerpt 抜粋
comments コメント一覧
trackbacks トラックバック送信
custom-fields カスタムフィールド
revisions リビジョン
page_attributes 属性(hierarchicalをtureに設定している場合のみ指定)

新規作成画面に設置するシステム

flush_rewrite_rules

「flush_rewrite_rules()」はパーマリンクの再設定を正しく処理する関数です。設定しないとカスタム投稿タイプのページに正しくアクセスできなくなります。必ず記述します。

add_action

intで「custom_post_type」が実行されるようにアクションフックを設定しています。

カスタム投稿タイプを複数設置する場合

カスタム投稿タイプを複数設置する場合は、以下のようなコードの書き方になります。

カスタム投稿タイプのテンプレート

カスタム投稿タイプを表示するにはテンプレートが必要です。

以下の優先順位でテンプレートが選択されます。

  1. single-カスタム投稿タイプ名.php
  2. single.php
  3. index.php

例えば、「item」のカスタム投稿タイプがあるのなら、以下のような優先順位になります。

  1. single-item.php
  2. single.php
  3. index.php

カスタム投稿タイプのテンプレートを作成する際は、テーマで使用している投稿記事ページや固定ページのテンプレートと同じ内容でカスタム投稿タイプページが表示できます。

アーカイブページのテンプレート

has_archiveを「ture」にした場合は、カスタム投稿タイプの記事一覧ページが表示できます。

この際のテンプレートは、以下のような優先順位になります。

  1. archive-カスタム投稿タイプ名.php
  2. archive.php
  3. index.php

例えば、「item」のカスタム投稿タイプがあるのなら、以下のような優先順位になります。

  1. archive-item.php
  2. archive.php
  3. index.php

カスタム分類について

カスタム投稿タイプの記事専用のカテゴリーやタグをカスタム分類といいます。

カスタム投稿タイプだけ設定しても、カテゴリーやタグ分けはできません。カスタム分類を設定すれば、可能になります。

カスタム投稿タイプとカスタム分類はセットで使います。

カスタム分類の機能もプラグインを使えば簡単に設置できますが、カスタマイズやメンテナンス、細かい設定を考えると自分でできる方が良いと思います。

関連記事では、カスタム分類を自分で設定する方法を詳しく解説しています。参考にしてください。

また、カスタム投稿とカスタム分類を一つにまとめて記述する方法も解説しています。

まとめ

カスタム投稿タイプをプラグインなしで設定する方法を紹介しました。

プラグインがあれば簡単に設置できますが、自分で設置できるに越したことはありません。一度覚えれば簡単ですので、サイト制作の幅が広がると思います。

WordPressサイトを運営するなら、通常のカテゴリーで記事を分類する方がサイト構造もシンプルで良いと思います。

しかし、ビジネスサイトなどで、記事の分類も多く、明確に分ける必要があるなら、カスタム投稿タイプを設置すると便利です。

カスタム投稿タイプはURLの階層が深くなりますが、検索順位に不利にはなりません。

通常のURLなら階層を浅くすれば「http://WordPressサイトのURL/スラッグ」になります。

カスタム投稿タイプなら、「http://WordPressサイトのURL/カスタム投稿タイプ名/スラッグ」になります。

URLの階層が一段階深くなるため、SEOに不利になると心配する人もいます。以前の検索エンジンであれば、不利になることもありました。

現在は、コンテンツが重要視されて、URLは意味がなくなりました。

クライアントのサイトを運営していても、投稿記事ページとカスタム投稿タイプページのアクセス数や検索順位に変わりはありません。

なお、カスタム投稿タイプのサンプルコードはWEB制作会社で長年使用していたものであり、完璧なコードだと思います。安心して使用してください。

次の、カスタム分類の記事ではカスタム投稿タイプとカスタム分類をセットで設定する方法を解説いたします。