WordPressの「カスタム投稿タイプ」とは何か?
この記事は2022/10/01に作成されました。
WordPressにおいて、記事の「くくり」を新たに制作するために「カスタム投稿タイプ」がよく利用されます。
左の画像は「新しい投稿タイプ」という名前の カスタム投稿タイプを登録したものです。 実際には、「ニュース」や「お知らせ」など、 通常の投稿記事とは別の枠として管理したい、表示したいような 項目を製作しているかと思います。
このように扱われるカスタム投稿タイプですが、果たして内部的にはどういう処理をしているのか?そもそも投稿とカスタム投稿タイプでは何が違うのか?というのを追ってみましょう。
URL構造を見てみよう
例として、「投稿」と「固定ページ」のURL構造を見てみましょう。
「投稿」の一覧ページにアクセスするためのURLは「wp-admin/edit.php」となっています。
こちらは固定ページですが、前の投稿のURLに加えて?post_type=pageというurlが付与されています。
edit.phpの後ろで投稿タイプを指定する事で、その投稿タイプの一覧を表示できるという事であり、つまり固定ページは内部的に「投稿タイプ」に「page」という名前を持っています。
そしてカスタム投稿タイプですが、
投稿のURLは「wp-admin/edit.php?post_type=custom_post」となっています。
(このcustom_postという部分は新たに制作したカスタム投稿タイプにつけた名前なので、設定によって変わります。)
前述の固定ページの用に、post_type=○○○の部分で投稿タイプを指定しています。これはつまり固定ページも、新たに追加したカスタム投稿タイプも、同じように扱う事ができるという事です。
ここまでを踏まえて、以下の画像を見てください。
「edit.php?post_type=post」でも「投稿」にアクセスできる事が確認できるかと思います。
これが意味する事が何かと言うと、「投稿」も「固定ページ」も「カスタム投稿タイプ」も、内部的には同じように扱われているという事です。
具体的には、データベース内の「wp_posts」の「post_type」にpost(投稿)、page(固定ページ)といった「くくり」の名前が格納されており、新たに投稿タイプを作った場合はここにその名前が格納されている…となっています。
ほとんどのWordPress機能ではデフォルトで「投稿」(=post)という投稿タイプを使用する、とされているだけで
動作の仕組みはどの投稿タイプでも同じ、という事ですね。
カスタム投稿タイプの活用法について
カスタム投稿タイプが「投稿」や「固定ページ」と同じ処理を行っていることがわかったとして、それが何を意味するのか?
それはつまり、「投稿」や「固定ページ」でできる事は、すべてできるというのを意味します。
例を上げるなら
・「投稿」のようにTOPページに記事一覧を表示する(「投稿」の代わりにする)
・「固定ページ」のように独立した固有のページを作る
・記事をまとめたアーカイブページを作成する
・ウィジェットの「検索機能」で引っかかるようにしたり、「月別の記事一覧」としてカスタム投稿タイプのページを表示する
というように、WordPressの機能を活用することができます。
しかし、これだけだと「同じようなことがカテゴリ機能を使っても出来るのでは?」と思うことでしょう。
実際、カテゴリを駆使しても近いことは出来るのですが、カスタム投稿タイプを利用する最大の利点として
「管理画面上で項目を完全に分ける」ことが出来ます。
例えば、「利用規約」や「プライバシーポリシー」のようなページを作る場合、そのまま「投稿」で制作すると一覧にまぎれてしまい管理上分かりづらくなってしまいます。
そういう時に「サイト規約」といったカスタム投稿タイプを制作すれば、管理画面上アクセスしやすい位置にまとめておくことができます。
また、固定ページでは一覧機能などは使用できませんが、これも「そういう機能を使わないように設定されている」というだけで、functions.phpやプラグインでの設定を行えば投稿と全く同じような機能を持つことができます。
ちなみに既存の投稿や固定ページを削除し、カスタム投稿タイプをそれら通常の投稿等のように使う事もできます。
プラグインとの兼ね合いなどで「通常の『投稿』は別の用途に使う」、「それとは別に投稿がほしい」といった場合に利用できるテクニックです。
「カスタム投稿タイプ」という名前だけを聞くと混乱しかねませんが、実際には「投稿」などとほぼ同じという事がわかりましたでしょうか。
WordPressにはさまざまな機能があり、一見難しそうでも紐解いていくとそこまで難しくはなかったりしますので
作りたいサイトに合わせてさまざまな機能を試してみると大変おもしろいと思います。
プログラマー/S.Y