カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0]

前回取り上げたカスタムタクソノミーはなんだか既存のサイトには使いづらい雰囲気満載でしたが、今回取り上げるカスタム投稿タイプは期待度満点。

投稿やページとは別に、思うままにカスタマイズした投稿タイプを作成できます。導入方法、機能の概要、表示方法を順に見ていきましょう。


カスタム投稿タイプの導入方法

カスタム投稿タイプについて、カスタムタクソノミーの時と同様、プラグインを使う方法と、直接コードを書く方法があります。

プラグインを使う

前回も登場した(というか、こっちが本業の)Custom Post Type UI プラグインを導入します。

custom post type UI プラグイン

Create New Custom Post Type 以下に入力していくと、簡単にカスタム投稿タイプを作成できます。

項目は以下の通り。

  • Post Type Name: (必須)カスタム投稿タイプの名前。コンピュータで読めるように設定する必要があるります。…つまり日本語はダメ→と思ったら通ってしまいました→が、通常の投稿を引っ張ってきてしまうので、やっぱり日本語ダメっぽい。
  • Label: カスタム投稿タイプのラベル。表示名。単語レベルで単数/複数を区別することが少ない日本語ではあまり関係ないありませんが、英語などでは複数形として設定するべきとされています。デフォルトでは、Post Type Name とおなじになるため、表示名を日本語にしたい場合はここで設定してください。
  • Singular Lable: カスタム投稿タイプの名前の単数形を設定します。上述の理由で日本語のラベルではあまり関係ないでしょう。
  • Public: カスタム投稿タイプが管理画面に表示されるかどうかを設定します。デフォルトでは "True"(表示される)。
  • Show UI: "True" にすると、管理画面に管理用の UI が表示されます。"False" にすると、UI は表示されません。
  • Capability Type: 読み書き・削除権限を構成するために使われる、とのことです。設定したタイプと同じ権限になるのだと思われます。デフォルトでは "post"。
  • Hierarchical: カスタム投稿タイプに親子関係を持たせるかどかを設定します。親・子にあたる投稿を指定できるようになります。デフォルトでは "False"。
  • Rewrite: パーマリンクのリライトフォーマットを設定します。デフォルトでは "True"。
  • Custom Rewrite Slug: パーマリンクのデフォルトフォーマットは Post Type Name となっていますが、別のものを使う場合はここに入力します。
  • Query_var: カスタムタクソノミー同様、用途が思いつきませんが、無難に "True" で。
  • Supports: カスタム投稿タイプの新規追加画面で、項目を表示するかどうかを設定できます。
    • Title: タイトル入力欄の表示/非表示
    • Editor:  本文入力欄の表示/非表示
    • Excerpt: 抜粋入力欄の表示/非表示
    • Trackbacks: トラックバック入力欄の表示/非表示
    • Custom Fields: カスタムフィールド入力欄の表示/非表示
    • Comments: ディスカッション設定の表示/非表示
    • Revisions: リビジョンの表示/非表示
    • Post Thumnails: アイキャッチ画像設定の表示/非表示
    • Author: 作成者設定の表示/非表示
    • Page Attributes: ページ属性欄の表示/非表示
    • 以上、何か一つでも指定すれば、一つ以上表示されます。全部チェックを外すと、タイトルと本文のみになります。デフォルトはタイトルと本文のみです。

ソースコードを書く

使用中のテーマの functions.php に以下のコードを追加することでも使用できるようになります。こっちのほうがいろいろ設定できますね(他の変数は 関数リファレンス/register post type – WordPress Codex 日本語版 を参照)。プラグインなどを作成する場合は、以下のコードを参考にしてみてください。

// カスタム投稿タイプを作成
// create custom post type
function odekon_custom_post_type()
{
  $labels = array(
    'name' => _x('部内会議', 'post type general name'),
    'singular_name' => _x('議事録', 'post type singular name'),
    'add_new' => _x('部内会議を追加', 'book'),
    'add_new_item' => __('新しい部内会議を追加'),
    'edit_item' => __('部内会議を編集'),
    'new_item' => __('新しい部内会議'),
    'view_item' => __('部内会議を編集'),
    'search_items' => __('部内会議を探す'),
    'not_found' =>  __('部内会議はありません'),
    'not_found_in_trash' => __('ゴミ箱に部内会議はありません'),
    'parent_item_colon' => ''
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 2,
    'supports' => array('title','editor')
  );
  register_post_type('bunaikaigi',$args);
}

add_action('init', 'odekon_custom_post_type');

ちなみに、menu_position は管理画面のサイドバーでの表示位置を調整できる変数です。5 で投稿の下、10 でメディアの下、20 でページの下、null でデフォルトの一番下になります。…が裏技的に、0 または 1 でダッシュボードの上に、2 または 3 でダッシュボードの下に表示することができるみたいです。

publicly_queryable を true にすると通常のクエリに出てくるはずなんですが、出てこないので、このあと表示するためにがんばることになります。

こ、これがカスタム投稿タイプの力なのかっ!

カスタム投稿の新規追加

カスタム投稿タイプとして「ヘッドライン」という項目を作ってみました。Supports はタイトルと本文というシンプル構成です。これでもう、「おでこくん、Trackbacks というのはなにを入力したらよいのかね」などとクライアント(部長とか)に言わせたりはしません。「これがカスタム投稿タイプの力なのかっ!」と言わせてみせよう、ホトトギス。

カスタム投稿の一覧

通常の投稿と同じように、ヘッドラインの記事だけが並ぶ専用の一覧画面もできます。これは分かりやすい。

カスタム投稿タイプを表示する

案の定表示されません

でもって、index.php を見ると案の定表示されません…。カスタムタクソノミーのときと同じように通常のクエリに含んでくれないみたいなんですね。

というわけで、TwentyTen テーマの loop.php の

<?php
	/* Start the Loop.
	 *
	 * In Twenty Ten we use the same loop in multiple contexts.
	 * It is broken into three main parts: when we're displaying
	 * posts that are in the gallery category, when we're displaying
	 * posts in the asides category, and finally all other posts.
	 *
	 * Additionally, we sometimes check for whether we are on an
	 * archive page, a search page, etc., allowing for small differences
	 * in the loop on each template without actually duplicating
	 * the rest of the loop that is shared.
	 *
	 * Without further ado, the loop:
	 */ ?>

の後あたりに以下を追加してみました。

<?php $loop = new WP_Query( array( 'post_type' => 'headline', 'posts_per_page' => 5 ) ); ?>

<?php while ( $loop->have_posts() ) : $loop->the_post(); ?>

		<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
			<h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

			<div class="entry-meta">
				<?php twentyten_posted_on(); ?>
			</div><!-- .entry-meta -->

			<div class="entry-content">
			<?php the_content(); ?>
			</div>
		</div>
<?php endwhile; ?>

すると…

表示されました!

無事表示されました。内容は今適当に考えましたが、会社の部署のイントラサイトを WordPress 3.0 で作ろうかなと思っているのでその実験を兼ねています。

投稿の新規追加をシンプルに絞ったのもそのためですね。まだまだ仕様の通りになっていなかったり、うまくできなかったりするところもありますが、カスタム投稿タイプはすごくいいよいいよー!

この投稿の“カテゴリー”: WordPress 、タグ: , , , 。ブックマークは追加ブックマークにはパーマリンクをどうぞ。. コメントもしくはトラックバックをどうぞ: トラックバック URL.

19 個のコメント

  1. 投稿日時: 2010/6/5 土曜日、15:28:33 | パーマリンク

    また人の多そうな時間に告知しますが、とりあえず失った文を全部書きなおしましたw:カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://www.odysseygate.com/archives/1624

  2. 投稿日時: 2010/6/6 日曜日、21:36:24 | パーマリンク

    ぶくま→ カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] | Odysseygate.com http://bit.ly/b9MdPb

  3. 投稿日時: 2010/6/7 月曜日、10:28:16 | パーマリンク

    カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0]という記事。企業向けCMSとして納品の際、この使い方をマスターする事は必須。コードの書き方、挿入ポイントも明確で分かりやすい。流石エロい人。http://bit.ly/bPxE3K

  4. 投稿日時: 2010/6/7 月曜日、11:01:43 | パーマリンク

    カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://bit.ly/bPxE3K #wordpress @wordpress_fan

  5. 投稿日時: 2010/6/7 月曜日、11:03:12 | パーマリンク

    RT @odyssey: カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://bit.ly/bPxE3K #wordpress @wordpress_fan

  6. 投稿日時: 2010/6/7 月曜日、11:10:04 | パーマリンク

    RT @odyssey: カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://bit.ly/bPxE3K #wordpress @wordpress_fan

  7. 投稿日時: 2010/6/7 月曜日、13:15:01 | パーマリンク

    カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://bit.ly/bPxE3K #wordpress [twicco.jp @odyssey ]

  8. 投稿日時: 2010/6/11 金曜日、20:30:23 | パーマリンク

    . @khoshino さんがカスタム投稿タイプを説明中。カスタム投稿タイプといえば、この記事もよろしくです! http://bit.ly/bPxE3K #nestakabane

  9. 投稿日時: 2010/6/12 土曜日、9:23:31 | パーマリンク

    昨日はWordPressについて、とても助かりました!カスタム投稿タイプも、他の方が更新する場合にはCMS的な使い方が出来そうですね! RT @odyssey カスタム投稿タイプといえば、この記事もよろしくです! http://bit.ly/bPxE3K #nestakabane

  10. 投稿日時: 2010/6/30 水曜日、12:15:32 | パーマリンク

    詳しくはこの記事が分かりやすい>カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] http://www.odysseygate.com/archives/1624

  11. 投稿日時: 2010/6/30 水曜日、14:55:27 | パーマリンク

    wpのカスタム投稿タイプについて… 「サルにもわかるカスタム投稿タイプ」http://bit.ly/bPhOsQ 「カスタム投稿タイプ(Custom Post Type)の導入と使い方 」http://bit.ly/aMoUo4

  12. 投稿日時: 2010/7/1 木曜日、13:13:31 | パーマリンク

    カスタム投稿に関しても、そのままではできないようです。OSCで田中さんが言っていた「Custom Post Type UI 」とテーマのループ部分に再定義が必要 >>http://bit.ly/bPxE3K #wordpress

  13. 投稿日時: 2010/7/14 水曜日、12:55:06 | パーマリンク

    WP3.0 カスタム投稿タイプの説明で今のとこ一番分かりやすかった。プラグインもあるんだね~

  14. 投稿日時: 2010/7/14 水曜日、12:55:09 | パーマリンク

    WP3.0 カスタム投稿タイプの説明で今のとこ一番分かりやすかった。プラグインもあるんだね~ / カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] | Odysseygate.com http://htn.to/jBFoU6

  15. 投稿日時: 2010/7/28 水曜日、10:28:50 | パーマリンク

    わかりやすい

  16. 投稿日時: 2010/8/3 火曜日、10:57:07 | パーマリンク

    [B!] カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] | Odysseygate.com http://www.odysseygate.com/archives/1624

  17. 投稿日時: 2010/8/3 火曜日、12:49:19 | パーマリンク

    タイムリーですね!RT @takesimm: [B!] カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] | Odysseygate.com http://www.odysseygate.com/archives/1624

  18. 投稿日時: 2010/8/5 木曜日、20:56:46 | パーマリンク

    @tashidesu カスタム投稿タイプ(Custom Post Type)の導入と使い方 http://www.odysseygate.com/archives/1624

  19. 投稿日時: 2010/9/1 水曜日、15:52:47 | パーマリンク

    カスタム投稿タイプの設定
    「カスタムポストタイプ」で検索するより全然でる。

6 個のトラックバック

  1. [...] This post was mentioned on Twitter by deeeki, Odyssey / おで. Odyssey / おで said: また人の多そうな時間に告知しますが、とりあえず失った文を全部書きなおしましたw:カスタム投稿タイプ(Custom Post Ty [...]

  2. [...] 残ったのはカスタム投稿タイプだ。当初私はこれも使わないだろうと思っていた。テーマごとに複雑なコードが必要で、表示にも気を使う。 [...]

  3. [...] には「プラグインを導入する」or「自分でコードを追加する」方法あり。↓参照http://www.odysseygate.com/archives/1624 AKPC_IDS += "137,";Popularity: 34% [?] This entry was posted in WordPress, プラグイン. Bookmark th [...]

  4. [...] 本語化したい方は以下からどうぞ!使い方はオデさんのページを参照してください。 [...]

  5. [...] あとはおでさんのサイトで カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] カスタムタクソノミー(Custom Taxonomy)の導入と使い方 [WordPress 3.0] などがわかりやすいので理解でき [...]

  6. [...] カスタム投稿タイプ(Custom Post Type)の導入と使い方 http://www.odysseygate.com/archives/1624 WaiWai倶楽部 [...]

コメントする

あなたのメールは 絶対に 公開されたり共有されたりしません。 *マークは入力必須項目です。

*
*

次の HTML タグと属性が使用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">