前回取り上げたカスタムタクソノミーはなんだか既存のサイトには使いづらい雰囲気満載でしたが、今回取り上げるカスタム投稿タイプは期待度満点。
投稿やページとは別に、思うままにカスタマイズした投稿タイプを作成できます。導入方法、機能の概要、表示方法を順に見ていきましょう。
カスタム投稿タイプの導入方法
カスタム投稿タイプについて、カスタムタクソノミーの時と同様、プラグインを使う方法と、直接コードを書く方法があります。
プラグインを使う
前回も登場した(というか、こっちが本業の)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 日本語版 を参照)。プラグインなどを作成する場合は、以下のコードを参考にしてみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
// カスタム投稿タイプを作成 // 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 の
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?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: */ ?> |
の後あたりに以下を追加してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?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 で作ろうかなと思っているのでその実験を兼ねています。
投稿の新規追加をシンプルに絞ったのもそのためですね。まだまだ仕様の通りになっていなかったり、うまくできなかったりするところもありますが、カスタム投稿タイプはすごくいいよいいよー!
ピンバック: Tweets that mention カスタム投稿タイプ(Custom Post Type)の導入と使い方 [WordPress 3.0] | Odysseygate.com -- Topsy.com
ピンバック: 私がカスタム投稿タイプを使うべき理由 | Odysseygate.com
ピンバック: 【プラグイン】Custom Post Types UI | WordPress入門記
ピンバック: Custom Post Type UI プラグインの日本語化 | め組の小ネタ
ピンバック: 個人ブロガーがWordPress 3.0にして嬉しいことってなんだろう « kwLog
ピンバック: @tashidesu カスタム投稿… - くぅちゃんのWaiWai倶楽部
有意義なご説明をありがとうございます。
「カスタム投稿タイプを表示する」について質問です。
メインページ(index.php)にカスタム投稿タイプを表示するときのカスタマイズ方法をご記述頂いておりますが、特定の「ページ」に、同じような表示を行なうことは可能ですか?
ピンバック: 特定のページにカスタム投稿タイプを表示する[WordPress 3.0] | Odysseygate.com
ピンバック: カスタム投稿タイプでページレイアウト
ピンバック: » Custom Post Types(カスタム投稿タイプ)とパーマリンク « fog-town web
ピンバック: カスタム投稿タイプの導入 | Check…1…2.
ピンバック: Wordpressのカスタム投稿タイプの一覧ページでページ送りを利用する | ちいさな創造
ピンバック: カスタム投稿タイプの表示用のページを作る-WordPress備忘録- | マイペースクリエイターの個人的な日記
ピンバック: 自分の中でWordPress再開 今回はカスタムフィールドを使ってみたい!
ピンバック: カスタム投稿について « てふてふ堂
ピンバック: BGS-WORKS Blog » [Wordpress] 知らなかった!3.0からの新機能の数々・・・・
ピンバック: カスタム投稿タイプの導入 | Check…1…2.
ピンバック: WordPress 「Custom Post Type UI」プラグインを簡単に使おう! | WeBridge
ピンバック: wordpress plug-ins - BLP @T-rabbit
貴重な情報ありがとうございます。
質問がございます。
custom post typeを導入したのですが、タスクノミーで入力した値がサイトに表示されません。
例えば、「WP」というタスクノミーに対して「3.0」を入力した場合、どのようなPHPコード・テンプレートタグを書くと、サイトに表示されるのでしょうか?
ご教授していただければ、幸いです。
よろしくお願いいたします。
ピンバック: Custom Post Type UI | SWP
ピンバック: j-inb.net » WordPressの新機能「カスタム投稿タイプ」を使う
ピンバック: その1 カスタム投稿タイプ手順リスト | Wordpressの勉強用サイト
ピンバック: カスタム投稿タイプをプラグイン無しで設定,表示 | WordPress ワードプレス とは
ピンバック: カスタム投稿タイプをプラグイン無しで設定,表示 | WordPress ワードプレス とは
ピンバック: WordPressカスタマイズでいろいろお世話になったリンク | 自然体
ピンバック: 【福岡】「WordPress初心者テーマ作成勉強会」のスライドをシェアします。 #wbfukuoka - WebCake
ピンバック: WordPress » » WordCurryとWordBench神戸分科会(2012/5/13)の振り返り » うえむ日記 - トヤヲ.ネット
ピンバック: WordPress 3.0.x でカスタム投稿を使ったコーポレートサイトを作る | 趣味の半畳
ピンバック: WordPress 3.0.x でカスタム投稿を使ったコーポレートサイトを作る | 趣味の半畳
ピンバック: WordPressでカスタム投稿タイプを使う – Waka8*Stakes[わかば☆すてーくす]
ピンバック: カスタム投稿タイプをプラグイン無しで設定,表示 – ワードプレスとは