wordpressをCMS的に使うには不可欠(?)なカスタム投稿タイプ。
検索エンジン等で調べてみても全体像が分かりにくいと思われているようなので簡単に整理しておきます。
まず、カスタム投稿タイプとは何か?
通常のindex.phpのループを使った「投稿→表示」ではなくて、それ以外に別のもう1系統の投稿「投稿→表示」を実現させようというもの。固定ページのように1ページだけを作るのでなくhoge-archive.phpを使う事でindex.phpのようなループも実現できます。
一番典型的な使われ方としては、「新着情報→新着詳細ページ」とかでしょうか。投稿タイトル、日時なども別途取得できるのでトップページに見出しを出す事もできます。
手順としては
1、function.phpに必要なコードを記述
2、テンプレートのテーマ名の入ったテンプレートex: single-news.php archive-news.phpを作成
最低限としてはこれだけ。意外に簡単。
という訳で、以下備忘録
// newsという名前のカスタム投稿タイプを設置
function news_custom_post_type() {
register_post_type( 'news', array( // ここの「news」をテンプレートの名前にする ex: single-news.php archive-news.php
'label' => 'ほげほげの新着情報',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ),
'has_archive' => true
) );
}
add_action( 'init', 'news_custom_post_type' );
■2.読み込むテンプレートを作成
単一ページ :single-「function.phpのregister_post_typeに記述した名前」.php
アーカイブページ:archive-「function.phpのregister_post_typeに記述した名前」.php
例:single-news.php
とりあえずindex.phpからのコピーでもOK。
※デフォルトではカスタム投稿タイプにはパーマリンク設定ができないので
Custom Post Type Permalinksというプラグインを使う。
/%post_id%で数字ベースのパーマリンクができる。
(設定→パーマリンク設定に設定画面が追加されている)
■3.カスタム投稿タイプの投稿タイトルと日時を取得
'news', // 表示するカスタム投稿名
'posts_per_page' => 7, // 表示する件数
);
?>
have_posts() ) : ?>
上記を記述したテンプレートファイルを固定ページに設定
そのパーマリンクを表示させると見出しの出来上がり。