# WordBench長野の第1回勉強会に参加してきました。 #wbNagano

- リンク: https://torounit.com/blog/wordbench%e9%95%b7%e9%87%8e%e3%81%ae%e7%ac%ac1%e5%9b%9e%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%ab%e5%8f%82%e5%8a%a0%e3%81%97%e3%81%a6%e3%81%8d%e3%81%be%e3%81%97%e3%81%9f%e3%80%82-wbnagano/
- 公開日: 2012-11-26T10:00:27+09:00
- 作成者: Toro\_Unit

11月24日に[塩尻インキュベーションプラザ](http://www.s-sip.jp/)で行われた、WordBench
長野の第1回勉強会で、「カスタム投稿タイプ&カスタムタクソノミー」というテーマで発表
をさせていただきました。

[slideshare id=15335944&doc=wbnagano20121124-121125054736-phpapp01]

人と話すこと自体嫌いではないのですが、何せあがり症で人見知りのコミュ障なので、まぁ
楽しいながらも大変な経験でした。
 発表の最中でこんなツイートが画面にも映ったり。

https://twitter.com/CrudeMusic/status/272228366399205377
 そんな苦労もありながら
も「カスタム投稿・タクソノミー便利そう！使ってみたい！」みたいなレスポンスも結構
いただけたのでそれなりに登壇者としての務めを果たすことができたのではないかなと。

誘っていただいた、みやざわさん[@dxd5001](https://twitter.com/dxd5001)を始め、運営
して下さった皆様、発表を見てくれた方やお話させてもらった参加者の方々本当にありがとう
ございました。

また、僕が燃え尽きていたせいで声をかけることができなかった方も居たので、Twitterでも
Facebookでもリアルでも絡んでいただけたら嬉しいです。発表でも言いましたが、お金以外
の寄付も歓迎です。

> .[@Toro_Unit](https://twitter.com/Toro_Unit?ref_src=twsrc%5Etfw) さんのプラグイン、「
> Custom Posttype Permalinks」 [http://t.co/YI6uKkS5](http://t.co/YI6uKkS5) フィードバック・
> バグレポート・ビールなどを絶賛募集するらしいｗ（次のバージョンの！）！ [#wordpressjp](https://twitter.com/hashtag/wordpressjp?src=hash&ref_src=twsrc%5Etfw)
> — Shinichi Nishikawa / Geolonia (@shinichiN) [November 24, 2012](https://twitter.com/shinichiN/status/272233045485047809?ref_src=twsrc%5Etfw)

ビールも好きですけど、美味しい日本酒はもっと好きです。でもおいしいごはんもやっぱり
大好きです。

そんなわけで、スライドの補足というか、スペースの都合で省略した、[register_post_type](http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_post_type)・
[register_taxonomy](http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy)
の実装例をつらつらと。[Custom Post Type UI](http://wordpress.org/extend/plugins/custom-post-type-ui/)
より、細かい設定ができますので、慣れてきたら、コードをfunctions.phpに書くほうがベター
かと思います。テキストボックスに一つ一つ書いていくより楽だし、使いまわしも利くので
仕様が固まっている場合はこっちのほうがいいかなーと思います。どうせ書くことなんて
変わらないですし。

[php]
 add_action(‘init’,’add_ctp’); function add_ctp() { register_post_type( ‘goods’,//
カスタム投稿名 array( ‘label’ => ‘商品’, ‘description’ => ”, ‘public’ => true, //
表示したり、URLでアクセスできたりするかどうか ‘hierarchical’ => false,　//固定ページ
みたいに階層にするかどうか ‘rewrite’ => array( ‘slug’ => ” ), ‘query_var’ => true,‘
has_archive’ => true, //アーカイブページを作成する ‘menu_position’ => 5, //メニュー
の位置。5は“投稿”の下。 ‘supports’ => array( ‘title’, ‘custom-fields’ ),どんな機能
を使えるようにするか。 ‘labels’ => array ( ‘name’ => ‘商品’,　//表示名 ‘all_items’
=>’商品一覧’, //すべての投稿のラベル ‘add_new’ => ‘新規追加’, ‘add_new_item’ => ‘
新しい商品を追加’, ‘edit’ => ‘編集’, ‘edit_item’ => ‘商品を編集’, ‘new_item’ => ‘
新しい商品’, ‘view’ => ‘商品を表示’, ‘view_item’ => ‘商品を表示’, ‘search_items’
=> ‘商品を検索’, ‘not_found’ => ‘商品が見つかりませんでした。’, ‘not_found_in_trash’
=> ‘商品がゴミ箱内に見つかりませんでした。’, ) ) );

 register_taxonomy(
 ‘goodscategory’, //タクソノミー名 ‘goods’,　//対応する投稿タイプ
array( ‘hierarchical’ => true, //階層（カテゴリ）にするか非階層（タグ）にするか ‘
label’ => ‘商品カテゴリー’, ‘query_var’ => true, ‘rewrite’ => true, ‘labels’ => 
array( ‘name’ => ‘商品カテゴリー’, ‘singular_name’ => ‘商品カテゴリー’, ‘search_items’
=> ‘商品カテゴリーを検索’, ‘all_items’ => ‘商品カテゴリー’, ‘edit_item’ => ‘商品
カテゴリーを編集’, ‘update_item’ => ‘商品カテゴリーを更新’, ‘add_new_item’ => ‘商品
カテゴリーを追加’, ‘new_item_name’ => ‘新しい商品カテゴリー’, ) ) );

 register_taxonomy(
 ‘campaign’, ‘goods’, array( ‘hierarchical’ => true, ‘label’
=> ‘キャンペーン’, ‘query_var’ => true, ‘rewrite’ => true, ‘labels’ => array( ‘name’
=> ‘キャンペーン’, ‘singular_name’ => ‘キャンペーン’, ‘search_items’ => ‘キャンペーン
を検索’, ‘all_items’ => ‘キャンペーン’, ‘edit_item’ => ‘キャンペーンを編集’, ‘update_item’
=> ‘キャンペーンを更新’, ‘add_new_item’ => ‘キャンペーンを追加’, ‘new_item_name’
=> ‘新しいキャンペーン’, ) ) );

}
 [/php]

カスタム投稿タイプの追加だったら、便利なクラスもあるので、そちらを活用してもよい
と思います。
 [カスタム投稿タイプを簡単に利用できるようにする便利コード | モンキーレンチ](http://2inc.org/blog/blog/1322/)

あとは、[順序をサポートしたカスタム投稿タイプのデフォルト表示順を変更してみる | Simple Colors](http://www.warna.info/archives/1827/)
とかを使うと、商品一覧とか、日付順で管理をしたくないものとかでは有効です。

また、register_taxonomyの’hierarchical’は、trueにしておいたほうが管理画面上では何かと
使い勝手が良いです。

こんな感じで、実はかなーり奥が深い機能です。’public’ => false を活用してプラグイン
のデータを保存したり（[Advanced Custom Fields](http://wordpress.org/extend/plugins/advanced-custom-fields/),
[Contact Form 7](http://wordpress.org/extend/plugins/contact-form-7/)なんかで使われ
ている手法です。）、ページを作成せずに更新可能なエリアを作ったりなど、応用範囲は
幅広いです。

カスタム投稿タイプとカスタムフィールド、WP_Queryを組み合わせるとほんとに無敵です。
DrupalのViews+CCKと似たような感じですかね。そっちよりは、機能的には少ないですが、
実装はシンプルです。Viewsは本当に何でも持ってこれますし、記事の抽出条件もかなり細か
く設定できますけど、その分パラメーターも多いので、場合と好みで使い分ければいいん
じゃないかと思います。

カスタム投稿タイプ・カスタムタクソノミーで素敵なWordPressライフをお楽しみください。
