WEB/システム/IT技術ブログ

WordPressで関数「register_post_type」を使ってカスタム投稿を追加する

WordPressでは通常の記事投稿や固定ページなどデフォルトの投稿タイプとは別に、自身で新しい投稿タイプを追加することができます。
最近ではWordPressをブログとしてだけではなく、本格的なCMSとして活用する場面も多くなってきました。そんな中で、店舗一覧、スケジュール一覧、商品一覧などオリジナルのカスタム投稿タイプを追加したい場合に、この方法は重宝します。

今回は例として、カスタム投稿タイプ「店舗一覧」を追加する想定で、コードを書いてみます。

カスタム投稿タイプ「店舗一覧」を追加

WordPressでカスタム投稿タイプを設定するためには、function.phpなどにアクションフックを設置して、そこで関数「register_post_type」を記述することで実現できます。
カスタム投稿タイプ「店舗一覧」を追加するコードは以下のようになります。

function create_post_type(){
	$args = array(
		'label' => '店舗一覧',
		'labels' => array(
			'singular_name' => '店舗一覧',
			'add_new_item' => '新規店舗を追加',
			'add_new' => '新規追加',
			'new_item' => '新規店舗',
			'view_item' => '店舗を表示',
			'not_found' => '店舗は見つかりませんでした',
			'not_found_in_trash' => 'ゴミ箱に店舗はありません。',
			'search_items' => '店舗を検索'
		),
		'public' => true,
		'has_archive' => true,
		'menu_position' => 5,
		'supports' => array('title','editor','thumbnail','custom-fields')
	);
	register_post_type('shop', $args);
}
add_action('init', 'create_post_type');

「register_post_type」でカスタム投稿を設定するのすが、第1引数「shop」でその投稿のスラッグを指定し、第2引数はオプションになっています。

オプションについて「labels」は管理画面で表示されるラベル文言になります。
「public」は、これらの投稿を公開するかどうかを設定します。通常ではtrueのままでよいでしょう。
「has_archive」はアーカイブページを持つかどうかを設定します。trueにすれば、この場合「http://xxx.xxx.xxx/shop/」が「店舗一覧ページ」になります。
「menu_position」は管理画面のサイドメニューのどの位置に「店舗一覧」を表示するか設定します。設定する値と表示される位置は以下の通りです。

5 投稿の下
10 メディアの下
15 リンクの下
20 固定ページの下
25 コメントの下
60 最初の区切り線の下
65 プラグインの下
70 ユーザの下
75 ツールの下
80 設定の下
100 二つ目の区切り線の下

「supports」で、投稿編集画面で編集できる内容を設定します。設定できる項目は以下の通りです。

title タイトル
editor 投稿記事内容
author 投稿者
thumbnail アイキャッチ画像
excerpt 記事の抜粋
trackbacks トラックバック送信
custom-fields カスタムフィールド
comments コメント
revisions 投稿をバージョン管理する

パーマリンク設定の更新

ここで、パーマリンクをデフォルトではない設定をしている場合、その設定を更新する必要があります。
つまり、上の記述だけではカスタム投稿が設定されただけで、「http://xxx.xxx.xxx/shop/」で投稿にアクセスするためには、パーマリンクを再設定する必要があります。
方法としては2つあります。

1つは、管理画面からパーマリンク設定画面を開き、「変更を保存」ボタンを押します。

2つ目は、ソース上で「register_post_type()」を実行した後に「flush_rewrite_rules()」を実行します。
ここで注意が必要なのは「flush_rewrite_rules()」は処理が重い上に、他のプラグインの誤動作などの原因になります。
カスタム投稿を設定して、一度実行してしまえばパーマリンクの設定は永続的に反映されるので、サイト公開後に処理を残さないように注意しましょう。

カスタム投稿タイプ「店舗一覧」の投稿画面

実際のカスタム投稿タイプ「店舗一覧」の投稿画面です。

カスタム投稿は複数追加できます。
活用することでCMS構築の幅が格段にあがりますね。

B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives