特定のカスタム投稿タイプの月間アーカイブを表示させるには。
私はひとつのサイトにカスタム投稿タイプをいくつも作っています。
トップページは全ての一覧でもいいけど、特定のカスタム投稿タイプのページなら、属するカスタム投稿タイプのみの月間アーカイブにしたいです。
function.php の <?php ?> の中に以下を丸々コピペ 。
<?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; }
?>
<?php
月間アーカイブを表示させたいテンプレートに以下をコピペ。
sidebar.php に直接書いてもいいけど、私はPHP可能なヴィジェットに書いています。ヴィジェットに書いた方がタイトルとかがCSSが他のヴィジェット達と揃ってよいので。
赤文字部分はご自分のカスタム投稿タイプに書き換えてね。
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=example&show_post_count=true'); remove_filter( 'getarchives_where', 'my_getarchives_where'); remove_filter( 'get_archives_link', 'my_get_archives_link' );
?>
こちらのサイトを参考にさせていただきました。
どうもありがとうございました。