「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
WordPress 3.0のカスタム投稿タイプ機能(その1)
WordPress 3.0はRC1がリリースされていて、正式版のリリースが近づいています。
WordPress 3.0の新機能の1つに、「カスタム投稿タイプ」があります。
この機能は、WordPressをCMS的に使う上でキーになると思います。
そこで、カスタム投稿タイプ機能について、数回に分けて紹介します。
(※)カスタム投稿タイプの関数はWordPress 2.9で追加されていますが、新機能としてプッシュされるのは3.0からです。
1.カスタム投稿タイプとは?
例えば、小規模な不動産業のサイトを、WordPressで作りたいとします。
物件の情報をWordPressで管理して、一覧表示等できるようにしたいとします。
また、そのサイトには、社長ブログも付けたいとします。
これまでのWordPressで上記のようなサイトを作る場合、以下のような手順をとることが多かったのではないかと思います。
- 物件用のカテゴリを作り、その下にサブカテゴリを作って、物件の情報を投稿として入力します。
- 社長ブログのカテゴリを作って、その下にサブカテゴリを作って、社長ブログの投稿を入力します。
ただ、このような構造はあまり美しいとは言えません。
また、物件と社長ブログの投稿を分けて出力するために、テンプレートにいろいろと手を加えることも出てきます。
カスタム投稿タイプは、上記のような問題をより良い形にすることができる機能です。
投稿/ページ以外に、独自のタイプのデータを扱うことができるようになります。
例えば、例に挙げた不動産サイトの例だと、以下のような手順を取ることが考えられます。
- ブログに「物件」というカスタム投稿タイプを追加し、物件の情報はそちらに入力します。
- 社長ブログの記事は、通常の投稿として入力します。
2.カスタム投稿タイプの追加例
前述の例のように、「物件」というカスタム投稿タイプを追加したいとします。
この場合、テーマのfunctions.phpテンプレートの最後に、以下のような記述を追加します。
function add_realestate_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, 'show_ui' => true, 'query_var' => true, 'capability_type' => 'post', 'hierarchical' => false, 'menu_position' => 5, 'supports' => array('title','editor','author','thumbnail', 'excerpt','comments','custom-fields') ); register_post_type('realestate', $args); }
これで、以下の画面のように、「物件」というカスタム投稿タイプのデータを入力することができるようになります。
次回は、上で出てきたregister_post_type関数の使い方を解説する予定です。
3.カスタム投稿タイプ/カスタム分類関係の記事の一覧
カスタム投稿タイプ/カスタム分類関係のその他の記事は、以下のリンクから参照できます。
- WordPress 3.0のカスタム投稿タイプ機能(その1)
- WordPress 3.0のカスタム投稿タイプ機能(その2)
- カスタム投稿タイプとカスタム分類を組み合わせる(その1)
- カスタム投稿タイプ/カスタム分類関連のページの出力
- register_taxonomy関数の書き方
「WordPressで学ぶPHPとMySQL」発売中です。
WordPressを通して、PHPとMySQLの基本をマスターするための本(PDF)です。
詳細は特設ページにて。