wordpressのカスタム分類とカスタム投稿タイプに関するメモ
□カスタム分類
$labels = array(
"name" => "イベントカテゴリ)", ※管理画面の上部に<H2>タグで表示されるタイトル。
"label" => "tx-events",
"menu_name" => "イベントカテゴリ", ※左のナビゲーションメニューに表示される文字列。
);
$args = array(
"labels" => $labels,
"hierarchical" => true, ※trueならカテゴリに、falseだとタグになる。わかるか!
"label" => "events",
"show_ui" => true,
"query_var" => true,
"show_tagcloud" => false, ※どうやら聞かない様子。 http://www.h-fj.com/blog/archives/2010/08/26-152442.php
"rewrite" => array( 'slug' => 'tx-event', 'with_front' => true ),
"show_admin_column" => true, ※投稿一覧画面のカラムとしてみせるか否か。
);
register_taxonomy( "tx-event", array( "event" ), $args ); ※カスタム分類から投稿を指定する場合は、arrayの中に書く。
register_taxonomy( "tx-event", array(), $args ); ※ここでは指定せずに、カスタム投稿から、カスタム分類を指定する方法もある。ただし、その場合、カスタム分類はカスタム投稿より前に定義(functions.phpなら上に書く)する必要がある。
□カスタム投稿タイプ
「register_post_type()」は、かならず"init"アクションの中から呼び出す必要がある。
⇒従って : add_action( 'init', 'my_event_init' );
==
register_post_type( "event", $args );
ここで"event"は、投稿タイプ名となる。
==
$labels = array(
"name" => "イベント・セミナー", ※管理画面の上部に<H2>タグで表示されるタイトル。
"singular_name" => "event",
"menu_name" => "イベント・セミナー", ※左のナビゲーションメニューに表示される文字列。
"all_items" => "イベント・セミナー一覧", ※左のナビゲーションメニュー(開いた状態)に表示される文字列。
);
$args = array(
"labels" => $labels, ※上記の配列をここに格納。
"description" => "",
"public" => true, ※ほぼお決まりか。
"show_ui" => true, ※ほぼお決まりか。
"has_archive" => false, ※アーカイブ(一覧)ページをつくる場合はtrue(archive-event.phptとなる。URL的には「/{singular_name}/」となる。)。
"show_in_menu" => true, ※管理画面にこの投稿タイプを表示するかどうか。表示するには show_ui が true の必要あり。
"exclude_from_search" => false,
"capability_type" => "post", ※ほぼお決まりか。「page」とすることもできる。基本は投稿扱い?
"map_meta_cap" => true, ※ほぼお決まりか。
"hierarchical" => false, ※「true」にすれば親が指定できる。「capability_type」を「page」にしない限りfalseか。
"rewrite" => array( "slug" => "event" ※パーマリンク構造のスラッグ。, "with_front" => true ※パーマリンクに影響),
"query_var" => true,
"menu_position" => 5, ※「5」ならば投稿の下に表示される。「10」ならばメディアの下。Codex参照。
"supports" => array( "title","editor", "custom-fields", "revisions" ),
"taxonomies" => array( "events" ) ※この投稿タイプで使用する、タクソノミーを指定する。タクソノミー(カスタム分類)は register_taxonomy() で登録する必要がある。
);
register_post_type( "event", $args );