Wordpress カスタム投稿の作成と表示

2020-05-14

ワードプレスの制作において、カスタム投稿タイプという言葉をよく見ると思いますが、そのカスタム投稿の作成方法と表示について、まとめていきます。
そもそもカスタム投稿とは、通常の投稿とは別に、もう一つ投稿画面を作っておきたい。という時に必要になります。
制作時の仕様や製作者にもよりますが、とあるコーポレートサイトを制作するときなど、新着情報は通常の投稿、会社概要などは固定ページ、実績例はカスタム投稿で。という風に、投稿によってサイトの更新を管理しやすくする事ができ、クライアントでも更新しやすくさせるというメリットがあります。もちろん、カテゴリでそういった分類でもいいという場合もあるので、一概には言えませんが。


新しい投稿タイプの追加

まずは、function.phpに下記の内容を追記して、管理画面にカスタム投稿タイプを追加します。

register_post_type()の引数として、少し解説をしておきます。
・public ・・・ 投稿タイプをパブリックにするかどうか。true の場合、管理画面とフロントエンド(ユーザー)の両方から利用可能。
・menu_position ・・・ この投稿タイプが表示されるメニューの位置。詳細は下記に。
・has_archive  ・・・ この投稿タイプのアーカイブを有効にする。
・supports ・・・・・・・・ 投稿画面で表示する項目。詳細は下記に。


menu_positionの補足

menu_positionの値を下記に指定する事で、それぞれ表示する場所を指定する事ができます。

数値 管理画面上の表示箇所
5 投稿の下
10 メディアの下
15 リンクの下
20 固定ページの下
25 コメントの下
60 外観の下
65 プラグインの下
70 ユーザーの下
75 ツールの下
80 設定の下
100 最下部に独立させる

supportsの補足

‘supports’ => array()の箇所で、配列にそれぞれ指定する事で、投稿画面に表示させる事ができます。

title タイトル
editor 内容の編集
author 作成者
thumbnail アイキャッチ画像。
現在のテーマが post-thumbnails をサポートしていること
excerpt 抜粋
custom-fields カスタムフィールド
revisions リビジョンを保存する

という感じで、必要最低限の内容ですが、他にもトラックバックの表示や、コメントといった内容の表示もあります。
関数レファレンス/register_post_type()の解説はこちら


ページの構成について

カスタム投稿の一覧ページについては、
1. archive-{post_type}.php(優先度の最も高いテンプレート)
2. archive.php(汎用アーカイブテンプレート)
3. index.php(全てのページの汎用テンプレート)
の順でテンプレートが選択されていきます。

また、同様に記事ページも
1. single-{post_type}.php
2. single.php
3. singular.php
4. index.php
の順でテンプレートが選択されていきます。

{post_type}はカスタム投稿タイプ名で、上記の[function.php]への記述でいうと‘news’にあたります。
その例でいうと、[archive-news.php]ということになります。

また、このファイルは[archive.php]をコピーして、ファイル名を代えるだけで、その後、デザインに合わせて編集していけば、大丈夫です。
ただし、上記の[function.php]の記述部分で、has_archive をtrueにしておかないと、一覧ページは表示されませんので、ご注意ください。

カスタム投稿を作成し、記事の投稿をしたけど、一覧ページが表示されない場合は、
・この部分がfalseのままになっている場合か、
・『管理画面』 > 『設定』 > 『パーマリンク』のページで一度保存をしてみると表示される場合
などがありますので、焦らず確認してみてくださいね。