post形式の記事一覧をトップページ以外で表示するには

投稿日:

通常のブログサイトはindex.phpの中でループを書いて記事一覧を取得しますが、

 

参考(個別記事の場合はこちら):
カスタム投稿タイプの記事はどこで出力される?

 
トップページ以外で、その一覧を表示するにはどうすべきか。
 
 

その1:固定ページとテンプレートを利用

  • 固定ページを作る
  • それ用のテンプレートを作成する
  • テンプレートの中でクエリーを発行してループ
  • で、一覧表示

 

 

これが一番スマートな方法なのでしょうか・・・・。

  

その2:アーカイブ機能を使う

twitter で@kzxtremeさんに以下のことを教えてもらいました。
  

カスタム投稿タイプは has_archive を true にしといて archive-{post_type}.php でループを回せば OK◎

  

つまり、functions.phpで設定するregister_post_typeでhas_archiveをtrueにすればいいみたいです。
[php highlight_lines=”10″]
//カスタム投稿タイプ
register_post_type(
‘gallery’,//DBに格納される投稿タイプ名
array(
‘label’ => ‘写真ギャラリー’,//管理画面に表示する投稿タイプの名前を指定
‘public’ => true,
‘hierarchical’ => false, //true:固定ページ形式、false:投稿記事形式
‘query_var’ => true, //パーマリンクのスタイル指定
‘show_in_nav_menus’ => false, //カスタムメニューの一覧に追加できるよう表示させるかどうか
‘has_archive’ => true, //アーカイブを有効にする(初期値はfalse)
‘supports’ => array(
//編集画面に表示する入力項目を指定
‘title’,’excerpt’,’thumbnail’
)
)
);
[/php]
ていうか、日本語の関数リファレンスには載ってないパラメータじゃないですか!
(参考:http://ja.forums.wordpress.org/topic/6064)

  
・・・ん?でも結局トップページから呼び出すには、
pageを作成してそのテンプレートを呼び出すしかないんじゃない?

今、固定ページのカスタムテンプレートとして作ったcustom-gallerylist.phpが、
archive-{post_type}.phpになるだけ?

と思ったら、違いました。

さきほどの@kzxtremeさんにあつかましく、トップページからの呼び出し方を聞いてみました。

http://example.com/{post_type}/ で archive-{post_type}.php が呼ばれます。
このリンクを取得するには get_post_type_archive_link( $post_type ) で◎

とのこと。

http://localhost/wp/gallery
おおおおおー。すごーい。
page作らなくてもカスタムメニューでできますね。

has_archive。すごい。
postはindex.phpを呼び出せばいいのかな?

コメントを残す