wordpressには投稿タイプというのあります。データベースの中を見れば分かりますが、
記事を書くと投稿も固定ページも同じく格納され、その属性にpostやらpageというように名前がはいっています。
デフォルトの投稿タイプ
初期の投稿タイプはWordPress にはデフォルトで5つの主要な投稿タイプがあります。ユーザーが使えるものと内部で使われるものです:
- 投稿 (投稿タイプ: ‘post’)
- 固定ページ (投稿タイプ: ‘page’)
- 添付ファイル (投稿タイプ: ‘attachment’)
- リビジョン (投稿タイプ: ‘revision’)
- ナビゲーションメニュー (投稿タイプ: ‘nav_menu_item’)
リビジョンは変更履歴や一時保存ですね。
カスタム投稿タイプ
要は自分で投稿やら固定ページのようなのを作れるタイプです。WordPress3.0から実装された機能です。
……で当初、悩んだ(´・ω・) ス
最初は”カテゴリーで分岐させて、挙げ句DB読んで普通に分岐すればいいじゃね?ん?なんぞ?普通にカテゴリーでいいじゃね?そのカテゴリにテンプレートつければ良いし。いらなくね?その機能”……と考えて、投稿毎にカテゴリーを選ぶのが面倒だからか?ああ、そうか理解する。実際に例も上手く説明されている。
ある通販サイトの事例では、wordpress(ワードプレス)を通じて「メルマガをHP上に公開」「ニュース記事を公開」「社員ブログを公開」「お客様の声を公開」といったコンテンツを、すべてカテゴリーだけで処理していました。
そのような運用を開始し、2年が経ち…メルマガは100記事、ニュースは50記事、社員ブログ100記事、お客様の声200記事と、大変ボリュームの多い投稿環境となり、過去記事の検索・修正がかなり煩雑になっていました。
また、各カテゴリーに応じてちょっとデザインを変えたい、ということで、「single.php」「category.php」をカスタマイズ。この結果、if文で分岐されデザインが挿入される大変管理しにくいテンプレートに迷走しながら進化していったそうです。文字通り、無理やり実装していますし、新しいカテゴリーでまたデザインを変えたい場合、if文が追加されることになります。思わぬ動作をしなければいいですが…。
@See https://www.wpcloud.jp/wordpress-tips/overview-of-custom-post-type/
ああ、やっぱりそうか、中規模、もしくは運用からか。そうだよね。いまやWordPressビジネスで使われてるものね。
早速実装
まずは今、
ここに……そうだな、お知らせ、そうね……お知らせを用意するか。カスタム投稿タイプをつくるには2つ。
- function.php に記載。
- プラグインを入れる。
ちなみにテーマを替えてfunction.phpが変ると使えなくなるから、プラグイン化しましょうというのが一般らしい(´・ω・) ス
function.php に記載
add_action( ‘init’, ‘create_information_posttype’ );
function create_information_posttype() {
register_post_type( ‘information’,
array(
‘labels’ => array(
‘name’ => __( ‘新着情報’ ),
‘singular_name’ => __( ‘新着情報’ )
),
‘public’ => true,
‘menu_position’ =>5,
)
);
}