会社で複数人でwordpressを投稿していると、カテゴリわけなどが複雑になって、統一しづらいことがあります。
そんな悩みを解決するのがregister_post_type
画面の赤枠のように投稿するメニューを追加することができ、誰がみても、わかりやすい投稿画面を作ることができます。
functions.phpに追加
投稿メニューを一つ追加します。
<?php register_post_type( 'news', array( 'label' => '新着ニュース', 'hierarchical' => false, 'public' => true, 'query_var' => false, 'menu_icon' => get_bloginfo('template_url').'/img/news_icon_s.jpg', 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ) ) ); ?>
解説
label→管理画面に表示する投稿の名前
hierarchical→trueだと固定ページ形式、falseだと投稿形式
query_var→trueだと『/?投稿名=記事のスラッグ』、falseだと『/?投稿名&p=記事のスラッグ』
menu_icon→メニューに表示されるアイコン画像
supports→投稿の編集画面に表示する入力項目を指定しています。
○title→タイトル
○editor→本文
○thumbnail→アイキャッチ画像
○excerpt→抜粋
○comments→コメント一覧
○trackbacks→トラックバック送信
○custom-fields→カスタムフィールド
show_ui→作成した投稿を管理画面に表示するかどうか、trueで表示、falseで非表示
publicly_queryable→投稿ページを作るかどうか、まずtrueですね。
exclude_from_search→投稿の記事を検索に反映するかどうか
show_in_nav_menus→投稿の記事をカスタムメニューで選択できるかどうか。
この最後の4つは基本的に設定はdefalutで問題はないので
そのときはpublic=>’true’で4つの設定をしてくれます。
投稿の時は?
管理画面で分けたので、投稿のときに、
例えば、商品メニューと新着情報を分けて表示したいということもあると思います。
そんな時は、
<?php query_posts('post_type=news'); ?>
下記のように指定した投稿の種類をpost_typeに入れてあげれば、その投稿のみ表示することができます。
register_post_type( 'news',
さらにカテゴリわけをしたい
投稿タイプでわけたものをさらに、普通の投稿と同じようにカテゴリわけをしたいという願いも叶えれます。
functions.phpに下記を追加
register_taxonomy( 'newscat', 'news', array( 'label' => 'ニュースのカテゴリー', 'hierarchical' => true, ) );
投稿タイプのカテゴリ名と投稿のタイプを書いて後は、
label→管理画面に表示する名前
hierarchical→trueだと階層構造をもつ、falseだと階層構造をもたない
で設定できます。