04.26.2013
カスタム投稿タイプで月間アーカイブを表示する
なんでうまくできないんだよ!
...で原因究明にトータル10時間ぐらい使っちゃったかも。
しかも単純ミスが原因という。
参考サイト
http://kshock.com/reference/?eid=57
・archive-[ポストタイプ名].php
・date.php
で読み込むことが可能です。
まず参考サイトにある通り、function.phpに以下を追加。
global $my_archives_post_type;
function my_getarchives_where( $where, $r ) {
global $my_archives_post_type;
$my_archives_post_type = '';
if ( isset($r['post_type']) ) {
$my_archives_post_type = $r['post_type'];
$where = str_replace( '\'post\'', '\'' . $r['post_type'] . '\'', $where );
}
return $where;
}
function my_get_archives_link( $link_html ) {
global $my_archives_post_type;
if ($my_archives_post_type != '') {
$add_link .= '?post_type=' . $my_archives_post_type;
$link_html = preg_replace("/href=\'(.+)\'\s/","href='$1".$add_link."'",$link_html);
}
return $link_html;
}
上記は特に書き換える必要はありません。
次に月間アーカイブリストを表示しているテンプレートに以下を追加します。
私の場合はsidebar.phpにいれました。
add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
add_filter( 'get_archives_link', 'my_get_archives_link', 10, 2 );
wp_get_archives('type=monthly&post_type=ポストタイプ名');
remove_filter( 'getarchives_where', 'my_getarchives_where');
remove_filter( 'get_archives_link', 'my_get_archives_link' );
「これでOK!」と書かれていますが、私はできませんでした。
いくつかのサイトも試したのですが...
この時点で確認できたのは、
・URLはそのポストタイプの各月毎のアーカイブページ
・表示されている内容は月間アーカイブ関係無しの全件表示。
原因
query_posts("post_type=ポストタイプ名&posts_per_page=表示件数&paged=".$paged);
こいつです。
こいつが書かれていたから、各月ごとに読み込んでくれなかった模様。
偶然、archive.phpはこれがなく
if(have_posts()): while(have_posts()): the_post();
すぐにリピートしろと指示してたので、実験して原因に気付くことができました。
なんかもうこれだけなのに...疲れた。
- 68 https://www.google.co.jp/
- 7 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEsQFjAD&url=http://d.hatena.ne.jp/lubystar/20130103/1357206270&ei=xT6CUaGeMPCyiQfW7IHACQ&usg=AFQjCNH9oCxN4LoThXszNhBVSib9GNzUow&sig2=FgTTLw03B02bfXTcOfZRcw&bvm=bv.45921128,
- 6 http://search.yahoo.co.jp/search?p=カスタム投稿+ページング&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&x=wrt
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=カスタム投稿 カテゴリ タイトル サイドバー&source=web&cd=5
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=22&ved=0CDYQFjABOBQ&url=http://d.hatena.ne.jp/lubystar/20130103/1357206270&ei=tj58UYCZOIqOkgXTrIHwCA&usg=AFQjCNH9oCxN4LoThXszNhBVSib9GNzUow&sig2=Lt2VHf3M0scj5CmoIv9Wug&bvm=bv.45645
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CEUQFjAC&url=http://d.hatena.ne.jp/lubystar/20130417/1366183374&ei=COeAUbLBCc6nkQWHvICgBA&usg=AFQjCNElOTkrFDJy34fccP0iVyCUi9D-BQ&sig2=eYw9DqJWZN7LgIcdb2RPvw&bvm=bv.45921128,
- 5 https://www.google.com/
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=16&ved=0CE0QFjAFOAo&url=http://d.hatena.ne.jp/lubystar/20130403/1365002502&ei=j598UcvEJsXQkgWhv4CIBQ&usg=AFQjCNFRqG1jWeekb_mCb7OHEyqpq8skRw&sig2=nc4uI878fVSwzisa2VkbYA
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=6&ved=0CGIQFjAF&url=http://d.hatena.ne.jp/lubystar/20130103/1357206270&ei=8z-FUZHOK46ekQWQ7ICYCw&usg=AFQjCNH9oCxN4LoThXszNhBVSib9GNzUow&sig2=BvB_ntVqCJuL47gIReGrZw&bvm=bv.45960087,
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0CGcQFjAG&url=http://d.hatena.ne.jp/lubystar/20130417/1366183374&ei=pJeMUb7FOsjdigffoIHQDA&usg=AFQjCNElOTkrFDJy34fccP0iVyCUi9D-BQ&sig2=9dei0xNOsR9ybXuh-S_H8w&bvm=bv.46340616,