Aopika技術日記

WEB制作の情報を自分のためにまとめたい

WordPressでカスタム投稿を追加する


WordPressでWebサイトやブログを運営していると標準の投稿タイプではカバー仕切れないレイアウトや構成になることが多いと思います。WordPressでは標準で用意している「投稿」以外にも独自で定義できるカスタム投稿があり、カスタム投稿タイプを使うことで、WordPressサイトの使い方がより自由になります。

今回はfunction.phpを修正してカスタム投稿タイプを追加する方法をご紹介しますが、まずはWordPressの投稿タイプについて。

WordPressの投稿タイプについての基礎知識

WordPressでは様々な形のコンテンツを保存し表示することが可能です。WordPressではその様々なコンテンツを管理するために標準では5つの投稿タイプを用意してあります。

  • 投稿 (投稿タイプ: 'post')
  • 固定ページ (投稿タイプ: 'page')
  • 添付ファイル (投稿タイプ: 'attachment')
  • リビジョン (投稿タイプ: 'revision')
  • ナビゲーションメニュー (投稿タイプ: 'nav_menu_item')

これらの投稿情報は全て1つのデータベースwp_postテーブルに格納されており、post_typeというカラムによって区別されております。

 

今回は上記の5つ以外に独自で定義した投稿タイプを登録します。これを「カスタム投稿」と呼びます。独自の投稿を作ることで、タグやカテゴリーによる細分化ではなく記事の種類自体を別で管理することが可能になります。例えばブログページとは別にニュースの配信を管理&表示する機能や、メンバー紹介を表示する機能など、固定ページでは更新が大変な部類のページを作るのにとても相性が良いです。(もちろん使い方によって様々な表示の仕方ができます)

 

管理画面にカスタム投稿タイプを導入する

前段が長くなってしまいましたが、ようやく本題です。

カスタム投稿を追加するにはテーマのfunction.phpでregister_post_type() 関数を使用しカスタム投稿タイプを追加する処理を実装します。

register_post_type() 関数について

register_post_type() は下記の通り2つのパラメーターをとります。

register_post_type( '投稿タイプ名', array() )

  1. '投稿タイプ名':投稿タイプの名前を定義
  2. array():設定オプションの引数を配列で渡す

投稿タイプ名について

1つ目のパラメーターで投稿タイプの名前を定義します。実際に画面を表示する際にはこちらの投稿タイプ名を指定することで定義したカスタム投稿タイプの記事を引っ張ってくることができるのでとても重要になります。

 

引数array()について

引数array内で主によく使う重要なパラメータは3つあります。labelsとsupportsの設定はさらに配列での定義が必要なのでarrayのネスト構造が深くなりますが、コードの見やすさを担保するためにいい感じのところで改行していきましょう。

■labels >> array

管理画面に表示するメニューの名前を設定できます。

要素名

設定内容

name

カスタム投稿タイプ名の複数形

singular_name

カスタム投稿タイプ名の単数形

add_new_item

カスタム投稿の新規作成ページの左上に表示されるタイトル

add_new

メニューの「新規」の位置に表示するラベル

new_item

カスタム投稿一覧ページの右上の方にある新規作成ボタンのラベル

edit_item

カスタム投稿編集ページの左上に表示されるタイトル

view_item

カスタム投稿編集ページの「○○を表示」ボタンのラベル

search_items

カスタム投稿一覧ページの検索ボタンのラベル

not_found

カスタム投稿を追加していない状態で、カスタム投稿一覧ページを開いたときに表示するメッセージ

not_found_in_trash

カスタム投稿をゴミ箱に入れていない状態で、カスタム投稿のゴミ箱ページを開いたときに表示するメッセージ

 

■public >> true or false

このカスタム投稿タイプを管理画面に表示する場合はtrueで表示します。

 

■supports >> array

記事投稿画面で表示する入力フィールドを指定します。

必要なものだけ選択するようにすれば投稿画面がすっきりするのでオススメです。

よく使う頻度は完全に主観になります。

 

文字列

入力欄

よく使う頻度

title

タイトル

★★★★★

editor

本文

★★★★☆

author

作成者

★★☆☆☆

thumbnail

アイキャッチ画像

※カスタム投稿でサムネイルを表示させるにはfunction.phpでadd_theme_support(‘post-thumbnails’);を実行する必要があります。

★★★★☆

excerpt

抜粋

★★★☆☆

comments

コメント一覧

★★★☆☆

trackbacks

トラックバック送信

★★☆☆☆

custom-fields

カスタムフィールド

★★★☆☆

revisions

リビジョン

★★★★☆

page-attributes

属性(hierarchicalをtrueに設定している場合のみ指定)

★★☆☆☆


register_post_type() 関数を実行する

register_post_type() 関数を実行するにはfunctionで一つの関数にまとめadd_action関数で実行することでWordPressにカスタム投稿の機能を追加していきます。

今回register_post_type()を「register_custompost」と言うfunctionにまとめadd_action('init', 'register_custompost');で実行しております。

このadd_actionはinit(WordPressの初期化処理)にregister_custompostを追加する処理を実行しております。

上記のコードが設置できたら、実際に管理画面を確認してみましょう。問題なく表示されているはずです。

 

function.phpを拡張できるようになればWordPressプラグインを作れたり、サイトや機能を自由にカスタマイズできるようになりますのでとても便利です。

 

次回はカスタム投稿を表示する方法を紹介していきたいと思います。