WordPressのカスタム投稿タイプとは
WordPressにおいて、デフォルトで用意されている投稿タイプには、細かく分けると5つあります。
- 投稿(post)
- 固定ページ(page)
- 添付ファイル(attachment)
- リビジョン(revision)
このうち、意識的に使うものが投稿(post)タイプと固定ページ(page)タイプの2つです。
これら5つのほかに、自分で投稿タイプを作成することができます。それをカスタム投稿タイプといいます。
カスタム投稿タイプの役割
カスタム投稿タイプを利用する意義は、投稿タイプと固定ページタイプのほかに、別の投稿タイプをつくることで、その投稿タイプのみを読み込ませて表示させるといった使い方できるところにあります。
記事投稿ページにあらかじめ定型のレイアウトを反映させたい際にも使うことができますが、それならばテンプレートをプラグイン等で導入することもできます。
例えばカスタム投稿タイプ名が「infomation」にして、「最新の情報を載せる投稿ページである」という風に決めたとします。
トップページやサイドメニューで「新着情報」という項目を作り、そこに
<?php if(have_posts()) : query_posts(‘post_type=information’); ?>
<?php while (have_posts()) : the_post(); ?>
<p><?php echo get_post_meta($post->ID, ‘date’ ,true);
<?php endwhile; ?>
<?php else : ?>
<?php endif; ?>
のように書けば、その投稿タイプを呼び出すことができます。
カスタム投稿タイプを作る
カスタム投稿タイプを作るには、function.phpにコードを追加します。
add_action(‘init’, ‘custom_posttype’);
function custom_posttype(){
register_post_type(‘information’,
array(
‘labels’ => array(
‘name’ => ‘infomations’,
‘singlar_name’ => ‘infomation’,
‘menu_name’ => ‘情報’
),
‘public’ => true,
‘query_var’ => true,
‘rewrite’ -> true,
‘capability_type’ => ‘post’,
‘hierarchical’ => false,
‘menu_position’ =>5,
‘supports’ => array(‘title’, ‘editor’)
);
}
3行目「register_post_type(‘information’,」は、カスタム投稿タイプの定義になります。上記でいうところの、「post」「page」「attachment」などと同じ意味合いです。
register_post_type()はWordPressの関数でカスタム投稿タイプを生成します。
4行目のarray内のlabelsの要素
4行目のarrayの中で設定できるlabelsは、様々な表示名称を設定します。labelsには以下の要素を指定できます。
add_new |
「新規追加」ボタンの名称。デフォルトは「新規追加」 |
add_new_item |
新規に投稿を追加する画面のタイトル。デフォルトは「新規投稿を追加」 |
all_items |
メニューの「すべて~」の名称。デフォルトはnameと同じ値。 |
edit_item |
投稿を編集する画面のタイトル。デフォルトは「投稿の編集」 |
menu_name |
メニューに表示する名称。デフォルトはnameと同じ値。 |
name |
カスタム投稿タイプの一般名。複数形で設定する。 |
name_admin_bar |
管理バーの「新規追加」のドロップダウンメニューに入る名称。デフォルトはnameと同じ値。 |
new_item |
「新規作成」するボタンの名称。デフォルトは「新規追加」 |
not_found |
投稿一覧ページ表示画面に記事が一件も投稿されていない際に表示するメッセージ。 |
not_found_in_trash |
ゴミ箱が空になっている際に表示されるメッセージ。 |
parent_item_colon |
階層がある投稿タイプの際の「親の~」の名称。デフォルトは「Parent Page」 |
search_items |
投稿一覧ページで記事を検索するボタンの名称。デフォルトは「投稿を検索」「Search Posts」「Search Pages」 |
singular_name |
この投稿タイプの単数形の名称。nameの単数形。 |
view_item |
「~を表示」の名称。デフォルトは「View Post」「View Page」 |
labels以外の項目
can_export |
エクスポートの可否を設定。デフォルトはtrue |
capabilities |
投稿タイプの権限の配列。
‘delete_other_posts’ =>(ほかのユーザが所有するオブジェクトの削除可否の制御)
‘delete_post’=>(メタ権限。投稿の削除可否)
‘delete_posts’=>(オブジェクトの削除可否を制御)
‘delete_private_posts’=>(非公開のオブジェクトの削除可否を制御)
‘delete_published_posts’=>(公開されているオブジェクトの削除可否を制御)
‘edit_post’=>(メタ権限。投稿の編集の可否)
‘edit_posts’=>(編集可否を制御)
‘edit_private_posts’=>(非公開のオブジェクトの編集可否を制御)
‘edit_published_posts’=>(公開されているオブジェクトの編集可否を制御)
‘edit_others_posts’=>(ほかのユーザが所有するオブジェクトの編集可否を制御)
‘publish_posts’=>(オブジェクトの公開可否を制御)
‘read’=>(オブジェクトの閲覧可否を制御)
‘read_post’=>(メタ権限。閲覧の可否)
‘read_private_posts’=>(非公開なオブジェクトの閲覧可否を制御) |
capability_type |
閲覧、編集、削除の権限を作る際に使う文字列。capabilitiesで使う。デフォルトでpost |
description |
投稿タイプの説明。デフォルトは空白 |
exclude_from_search |
このタイプの投稿を検索結果から除外する(true)か否(false)か。デフォルトはpublicと反対の値 |
has_archive |
投稿タイプのアーカイブを有効・無効の設定。デフォルトはfalse。アーカイブのスラッグは$post_typeが使われる。 |
hierarchical |
この投稿タイプが階層を持つ(true)か否(false)か。デフォルトはfalse |
map_meta_cap |
メタ権限処理の使用の有無。デフォルトはnull |
menu_icon |
アイコンのURL。デフォルトはnullで、アイコンは投稿アイコン。 |
menu_position |
投稿タイプを表示するメニューの位置。show_in_menuをtrueにすると動作する。
5(投稿の下)
10(メディアの下)
15(リンクの下)
20(固定ページの下)
25(コメントの下)
60(最初の区切りの下。コメントの下)
65(プラグインの下)
70(ユーザの下)
75(ツールの下)
80(設定の下)
100(2番目の区切りの下。設定の下) |
permalink_epmask |
rewriteのendpointビットマスクのデフォルト値 |
public |
投稿タイプをパブリックにする(true)か否(false)か。 |
publicly_queryable |
フロントエンドでpost_typeクエリを実行できるようにする(true)か否(false)か。デフォルトはpublicの値 |
query_var |
この投稿に使用するqeruy_varキーの名称。falseにするとURL形式でクエリ表示(?{query_var}={スラッグ})できなくなる。文字列を指定すると、?文字列={スラッグ}となる。デフォルトはtrue($post_typeの値) |
register_meta_box_cb |
編集フォームのメタボックスをセットアップする際に呼び出すコールバック関数の指定。デフォルトはなし |
rewrite |
投稿タイプのパーマリンクのリライト方法を指定する。falseでリライトしない。デフォルトはtrue($post_typeをスラッグにする)
$arg配列で以下を指定できる。
‘ep_mask’=>定数(endpointマスクを割り当てる)
‘feeds’=>真偽値(フィードのパーマリンク構造を作成)
‘pages’=>真偽値(パーマリンク構造をページ送りに対応する)
‘slug’=>文字列(パーマリンク構造のスラッグを設定)
‘with_front’=>真偽値(パーマリンク構造のフロントベースの有無を指定) |
show_in_admin_bar |
投稿タイプを管理バーから使えるようにする(true)か否(false)か。デフォルトはshow_in_menuの値 |
show_in_menu |
管理画面に投稿タイプを表示する(true)か否(false)か。show_uiがtrueの時に有効。
トップレベルのページを指定するとそのサブメニューに配置する(tools.phpなど)。 |
show_in_nav_menus |
ナビゲーションメニューで投稿タイプを選択できるようにする(true)か否(false)か。デフォルトはpublicの値 |
show_ui |
投稿タイプを管理するUIを生成する(true)か否(false)か。デフォルトはpublicの値。 |
supports |
add_post_type_support()/enを呼び出すエイリアス。配列で指定。falseにするとデフォルトの停止。デフォルトはtitleとeditor。
‘author’(著者)
‘comments’(コメント、編集画面にコメント数のバルーンを表示)
‘custom-fields’(カスタムフィールド)
‘editor’(内容の編集)
‘except’(概要)
‘page-attributes’(メニューの順序)
‘post-formats’(投稿フォーマットの追加)
‘revisions’(リビジョンの保存)
‘title’(タイトル)
‘trackbacks’(トラックバック送信)
‘thumbnail’(サムネイル画像) |
taxonomies |
categoryやpost_tagなどのタクソノミーの配列を設定。register_taxonomy()でタクソノミーを登録する必要がある。デフォルトはタクソノミーなし |
_builtin |
投稿タイプがネイティブまたはビルトインである場合はtrue、そうでない場合はfalse。デフォルトではfalse。カスタム投稿タイプの場合は記載しない。 |
_edit_link |
エントリを編集するリンク。’post.php?=%d’など。カスタム投稿タイプの場合は記載しない。 |
関連記事