HOME技術WordPressWordPressのカスタム投稿タイプとは

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’など。カスタム投稿タイプの場合は記載しない。

関連記事

WordPressのタクソノミーとは

WordPressにおけるタクソノミーとは、分類のことです。標準で用意されているタクソノミーには「カテゴリ」「タグ」があります。 カテゴリとタグ カテゴリとは、投稿記事が属するテーマを設定するもので、…続きを読む

WordPressでページがあるのにエラー表示される

WordPressでページが存在しているにもかかわらず、そのページへのリンクをクリックすると、「存在しない」と言われてしまう場合には、「設定」→「パーマリンク設定」より「基本」を選んで「変更を保存」を…続きを読む

WordPressで親カテゴリを含めた記事のタイトルを表示する

WordPressで、「親カテゴリ」→「子カテゴリ」→「孫カテゴリ」…→「記事タイトル」を表示するコードです。 <?php $cats=get_the_category(); $ca…続きを読む

WordPressの投稿タイプとは

WordPressでは、記事を投稿する際に、「投稿」タイプ、「固定」タイプ、「カスタム」タイプの3つのうちから選択します。 このタイプのことを「投稿タイプ」と呼んでいます。 投稿タイプは乱暴に言うと、…続きを読む

WordPressにプラグインを追加する

プラグイン配布サイトなどから、プラグインをダウンロードします。 今回は、TinyMCE Advancedという記事投稿画面のツールバーを拡張するプラグインで説明します。 まず、WORDPRESS.OR…続きを読む

WordPressで記事が属するカテゴリをすべて表示する

アーカイブページなどで、記事一覧を表示している時に、その記事が属するカテゴリをすべて表示する方法です。 コード <ul> <?php while (have_posts()) : t…続きを読む

WordPressのTinyMCEを利用している際にstyleタグなどが消されてしまう

WordPressでより便利に記事を書くためのエディタとして、TinyMCEプラグインがあります。このプラグインは、ビジュアルとテキストで表示を入れ替えて確認したり、コードを直接書き込んだりすることが…続きを読む

WordPressでテーマを自作するときに必要なphpファイル

最低限必要なファイル WordPressでウェブサイトを表示するために最低限必要なファイルは、index.phpとstyle.cssです。この2つのファイルがあればWordPressを動作させることが…続きを読む

WordPressで構築したサイトをLAN内で閲覧しようとするとリンクが切れる

WordPressをあるPCにインストールして、そのサイトを同じLAN内の別のPCからIPアドレスを指定して閲覧しようとすると、リンクが切れて表示されてしまう場合の対処法です。 例えば、「http:/…続きを読む

WordPressにファイルをアップロードできないときの対処法

WordPressを使っていて、メディアを新規追加しようとすると、「アップロードしたファイルをwp-content/uploads/***に移動できませんでした」と表示されて、アップロードできませんで…続きを読む