WordPress カスタム投稿タイプの究極ガイド
公開: 2024-03-2610 年以上前、私は出版プラットフォームとして WordPress とプラグインを構築する CMS としてのみ使用することに集中するという、人生とキャリアを変える決断を下しました。 主な理由は、スニペットやチュートリアルを含む無数の投稿を含む優れたドキュメントと、WordPress の拡張の容易さでした。 当時の私のユースケースでは、WordPress を拡張する最も顕著な機能はカスタム投稿タイプでした。
2010 年の WordPress バージョン 3 で主に改良され、カスタム投稿タイプ (CPT) はさまざまな方法で使用されます。 きっとあなたも知らず知らずのうちに出会ったことがあると思います。 CPT の概要、私がこれまでどのように CPT を使用したかの具体例、自分で設定する方法、関連するプラグインを使用してさらに多くのことを達成する方法について説明します。
カスタム投稿タイプとは何ですか?
WordPress コアにはさまざまな投稿タイプが付属しています。 最もわかりやすいのは、投稿、ページ、添付ファイルです。
WordPress 6.4 には、さらに 4 つあります。
- 改訂
- ナビゲーションメニュー
- ブロックテンプレート
- テンプレートパーツ
興味深い事実: コメントは投稿タイプではありません。 WordPress がもともとコメントを中心としたブログ プラットフォームでなかったとしたら、今ではコメントも投稿タイプとして扱うようになるでしょう。
これらのことからわかるように、投稿タイプは必ずしも明らかではなく、必ずしもフロントエンドで「コンテンツ」と表現されるような目に見えるものではありません。 これらは、データベース内の関連項目のグループに近いものです。
これらの「もの」をさらに追加すると、「カスタム」投稿タイプと呼ばれます。
これは WordPress の公式用語ではありませんが、目に見えるカスタム投稿タイプについてはカスタム「コンテンツ」タイプというフレーズが好きです。 後でいくつかの例について説明します。
カスタム投稿タイプを使用する理由
WP 市長は、現在ご覧いただけるライフタイム ディールなど、複数のカスタム投稿タイプを長年にわたって使用してきました。
私は個人的にカスタム投稿タイプをさまざまな用途に使用してきました。
最も一般的なのは、Web サイト上の個別のコンテンツ セクションです。 これは、コンテンツが組み込みの投稿やページとは異なる表示や動作をする必要がある場合に最も合理的です。
WP 市長にも専用の「ニュース」投稿タイプがあると想像してみましょう。 このカスタム投稿タイプを登録するだけで、次のようなメリットがあります。
- WP Admin のメニューにある個別の「ニュース」項目。
- ユーザーおよびユーザーの役割に、そのタイプに異なる機能を付与する機会。
- フロントエンドで単一のニュース項目を表示するためのさまざまなテンプレートを用意します。
- ニュースの別のアーカイブとフィード。
- 追加の投稿メタデータはニュースとともにのみ保存され、ニュースのために表示されます。
また、さまざまなプラグインのコンテンツ要素にカスタム投稿タイプを使用しました。 私はかつて、別荘用の予約プラットフォームを構築しました。そこでは、家、予約、支払いがそれぞれ固有の属性を持つ個別のカスタム投稿タイプでした。 これは、WordPress 用のほとんどの電子商取引プラグインでも行われていることです。
別のケースでは、すべての送信電子メールの内容をログに記録したいと考えていました。 そこで、メールの内容と、WordPress バックエンドの適切な機能でのみ表示されるすべての添付メタデータを含む「ログ」投稿タイプを作成しました。
最後に、私が最初に開発した Advanced Ads プラグインは、CPT を使用して広告コンテンツを保存しました。
これらはカスタム投稿タイプのほんの一例です。 私が何年にもわたって出会った他の多くの興味深い使用例について言及するのを忘れていたに違いないことはわかっています。
WordPress の CPT の主な利点は、数行のコードまたはプラグインによる簡単なセットアップのみが必要であり、サイト上で CPT を管理および表示するために必要なロジックの多くを WordPress が処理してくれることです。 それでは、WordPress カスタム投稿タイプの作成方法を見ていきましょう。
カスタム投稿タイプの作成
カスタム投稿タイプは手動またはプラグインを通じて作成できます。
コーディングの経験がない場合でも、プラグインを使用するとカスタム投稿タイプを簡単に作成できます。
プラグインを使用する場合の欠点の 1 つは、プラグインを削除するとすぐにカスタム投稿タイプが失われることです。 おそらくデータベースにはまだ存在しますが、WordPress はフロントエンドまたはバックエンドでそれを認識しなくなりました。
これを何十回も行ってきた開発者として、私は今でも手動の方法を好みます。 ただし、WordPress カスタム投稿タイプを一時的に使用する場合、またはクライアント向けのショーケースを作成する場合には、優れた UI を備えたプラグインも使用していることを喜んで認めます。
カスタム投稿タイプの決定事項
カスタム投稿タイプの作成に使用している方法にもかかわらず、最初にいくつかの決定を下す必要があります。 理論的には後から変更することもできますが、変更するとサイトと設定に大きな影響を与える可能性があるため、事前に検討しておくことが最善です。
公立かどうか?
カスタム投稿タイプに関する主な決定は、誰がそれを表示して操作するかです。 カスタム コードまたはプラグイン内で、CPT をフロントエンド (アーカイブや直接アクセス可能な単一ページを含む) で表示するかどうか、およびユーザーが検索を通じて CPT を見つけるかどうかを選択できます。 メニュー項目とともに WordPress サイトのバックエンドに表示する必要がありますか?
「ニュース」CPT はおそらくフロントエンドで完全に表示されますが、内部ログや支払いのようなものは、WordPress バックエンドで特定のロールを持つユーザーに制限されている可能性があります。
階層型
WordPress の投稿タイプとページの投稿タイプの動作が若干異なることにお気付きかもしれません。 ページのフロントエンドにはアーカイブはありませんが、親ページと子ページを持つことができます。
後者は「階層」と呼ばれ、独自の投稿タイプを作成するときにも定義されます。
階層型投稿タイプの場合、編集ページには親ページと順序を選択するオプションが表示されます。
ページからメニューやリストを自動的に作成する場合、順序と親ページが重要になる場合があります。 階層は URL スラッグにも表示されます。 私のページが「ドキュメント」を親ページとして持つ「トラブルシューティング」だった場合、最終 URL はdocumentation/troubleshooting
になる可能性があります。
ヒント: より深い階層を持つ CPT がある場合は、Nested Pages プラグインを使用して投稿を正しい順序にすばやく配置することをお勧めします。
ブロックエディターまたはクラシックエディター
カスタム投稿タイプを作成する際、「REST API」で表示するかどうかを尋ねられます。 この技術用語は、CPT がブロック エディター ビューを使用するかクラシック エディター ビューを使用するかを決定するという重要な役割を果たします。
経験則として、投稿タイプが通常のコンテンツに似ており、WordPress ブロックを使用したい場合は、ブロック エディターを使用するのが合理的です。 画面の大部分をコンテンツに必要としないカスタム投稿タイプでは、クラシック エディターを選択する必要があります。 したがって、REST API を介して配信すべきではありません。
URL スラッグと構造
行う必要があるもう 1 つの重要な決定は、CPT スラグに名前を付けることです。 「ニュース」投稿タイプは URL 内でnews
として参照される場合がありますが、より派手な内部名がある場合は、フロントエンド URL に短い形式を選択することをお勧めします。
これは SEO にとって重要な決定となる可能性があるため、数分かけて検討してください。
サポートされている要素
作成している投稿タイプによっては、次の要素のサポートを有効にするかどうかを事前に決定することもできます。
- タイトル (デフォルトで有効)
- エディターの表示 (デフォルトで有効)
- コメント
- 改訂
- 著者
- 抜粋
- サムネイル
微調整できるオプションは他にもたくさんあります。 ただし、WordPress カスタム投稿タイプを使用する前に、上記のことを考慮することが最も重要です。
プラグインを使用してカスタム投稿タイプを作成する
これを念頭に置いて、プラグインを使用してカスタム投稿タイプを作成し、同じことを手動で作成する方法を見てみましょう。
ここでは、wordpress.org で最も人気のある無料の 1 つ、WebDevStudios の Custom Post Type UI (CPTUI) を使用します。
そのインターフェイスは非常に簡単で、カスタム投稿タイプ プラグインに期待されるすべてのオプションが備わっています。 ただし、カスタム投稿タイプはまだ把握するには抽象的な概念であり、通常の WordPress 発行者がオプションについての深い知識なしにいじるべき機能ではないことも明らかになります。
ヒント: 私は個人的に CPT の「パブリック」オプションについては保守的で、フロントエンドで誰が CPT を参照できるか、また誰がバックエンドで CPT を変更できるかについてはできる限り制限しています。 必要に応じて、後でいつでも追加のアクセスを許可できます。
カスタム投稿タイプ UI の利点
このプラグインについて、他の人が持っているかもしれないし持っていないかもしれない、私が気に入っている点がいくつかあります。
私は通常、CPT を手動で作成するので、ラベルの作成には時間がかかることを知っています。 CPT の名前を言及するようにすべてを調整したい場合は、約 34 個あります。 上のスクリーンショットでわかるように、カスタム投稿タイプ UI プラグインには、これらのラベルを自動入力するオプションがあります。 後からインターフェイスで調整することもできます。
次に、カスタム投稿タイプを保存して、後で編集できます。 スラッグを変更することもでき、プラグインはそのタイプのすべての投稿を移行します。 そのようなことが必要になる状況を避けるように努めますが、それが可能であり、プラグインによって処理されることを知っておくのは良いことです。
カスタム投稿タイプ UI には、投稿タイプの概要が表示されます。 少し面倒に感じますが、カスタム コードよりもレビューが簡単です。 最後の列にあるテンプレートのリストを見るのも好きです。
これらのテンプレートは、WordPress カスタム投稿タイプの魔法の一部です。 News CPT がスラッグnews
を使用した場合、WordPress はテーマ内でarchive-news.php
というファイルを自動的に検索して、その投稿タイプのアーカイブ ページ、または単一のニュース ページのsingle-news.php
をレンダリングします。 詳細については、「テンプレートの階層」を参照してください。
CPTUI を使用したコードの生成
最終的に Custom Post Type UI を推奨するきっかけとなった機能は、CPT を PHP コードにエクスポートするツールでした。 [CPT UI] > [ツール] > [コードの取得] で、プラグインまたはfunctions.php
で使用する PHP コードが見つかります。 人々を囲い込まなかったプラグイン開発者に敬意を表します。
これにより、インターフェイスを通じてカスタム投稿タイプをすばやく設定し、それを使用するための PHP コードを取得できるため、CPTUI は開発者にとって理想的なツールになります。 すべてのラベルなどを備えたテスト サイトでお客様にセットアップしてもらい、必要な場所に移行することもできます。
プラグインで見つからなかった唯一のオプションは、カスタム投稿タイプとそのすべてのエンティティを削除することです。 一般に、プラグインまたはコードを削除しても、カスタム投稿はデータベースに残ります。 ただし、それをクリーンアップするための専用のプラグインがあります。
コードの使用
あなたが開発者で、コードを使用してカスタム投稿タイプを実装したい場合は、WordPress ドキュメントの関連セクションを参照してください。
新しいカスタム投稿タイプを登録するための中心となる関数は register_post_type 関数です。 そのパラメータを使用すると、上で説明したすべてのオプションを設定できます。
すべての投稿タイプはデータベースのwp_posts
テーブルに保存されます。 post_type
フィールドは、投稿タイプがどのエントリに属するかを決定します。
カスタム投稿タイプが単なるコンテンツ以上のものである場合は、投稿メタデータを使用できます。 このデータはwp_postmeta
に保存されます。
ちなみに、一部のプラグインはカスタム テーブルを使用してコンテンツ タイプを管理します。 WordPress の組み込み機能や Custom Post Types API に付属する機能をすべて使用することはできないため、本当に必要な場合を除き、その方法を使用しないでください。
カスタム投稿タイプを拡張する
カスタム投稿タイプが公開されている場合は、さらにカスタマイズすることもできます。 ここにいくつかのオプションがあります。
カスタムフィールドとメタボックス
イベントやショップアイテムなど、より高度な CPT にはコンテンツ以上のものが必要です。 ここでカスタムフィールドが活躍します。 さまざまな方法でデータを構造化するための入力フィールドが提供されます。 たとえば、「イベント」投稿タイプには、イベントを表示してフィルターできるように、開始日と終了日、または会場が必要になる場合があります。
カスタム コードを使用してカスタム フィールドとメタ ボックスを追加できますが、そのための優れたプラグインは、非常によく知られている Advanced Custom Fields です。 非常に多くのオプションがあり、非常によく管理されているため、開発者の私でも自分のサイトでカスタム フィールドをコーディングすることはありません。
カスタム分類法
デフォルトの「投稿」タイプは「カテゴリー」「タグ」で並び替えることができるので、カスタム投稿タイプにもタクソノミーを登録できます。
上記で推奨した Custom Post Type UI プラグインも同様に作成に役立ちます。
能力管理
Members などのプラグインを使用して、新しいカスタム投稿タイプの作成と変更、または既存の関連ユーザー ロールの調整のみを行うことができる、サイト上の作成者用の新しいロールを作成できます。 これは、編集ワークフローが投稿タイプごとに異なる場合に推奨されます。
ポストタイプの切り替え
現在、WordPress で構築した社内ナレッジベースのコンテンツを再編成しています。 ここで、投稿とページの目標は大きく異なります。 中には目標を変更したものもあったため、投稿タイプを切り替えるソリューションが必要でした。
公開投稿タイプでこれを安易に行うことはお勧めしませんが、同様の投稿タイプを備えた非公開サイトでこれを実行しても問題はありません。 これを達成するために、私は Post Type Switcher をインストールしました。これは、手間をかけずにそれを行うことができる優れたプラグインです。 プラグインをインストールすると、「投稿の編集」画面に「投稿タイプ」セクションが追加されます。 このインターフェイスを使用して、必要に応じて投稿タイプを変更できます。
結論
私は今でも、カスタム投稿タイプは WordPress が過去 10 年以上にわたって繁栄することを可能にした重要な機能であると考えています。 これは、私たちのお気に入りの CMS を、単純なブログ プラットフォームから、イベントやオンライン ショッピングを管理するための多用途ツールに変えた基礎です。
多くの Web サイトで使用されるプラグインを構築するとき、私は依然として新しい投稿タイプを作成するコードに遭遇します。 しかし、私自身や顧客向けのサイトを構築するときは、プラグインを使用しています。 これらにより、カスタム投稿タイプの作成と変更がはるかに簡単になり、私がこれまでに構築したものよりもはるかに優れた UI が実現しました。