カスタム投稿タイプのサイドバー

カスタム投稿タイプで

直近の●●件
カテゴリー一覧
月別・年度別アーカイブ

を表示したいとき

  • パーマリンクの設定はデフォルト
  • カスタムポストのカテゴリーはtaxonomy追加で、”カスタムポスト名_cat”

こんな感じのページが出来ます。
http://halu-g.jp/?post_type=report

sidebar.phpとかに

//直近の5件
<ul>
<?php
global $post;
$post_type = get_post_type();
$args = array (
 'post_type' => $post_type,
 'orderby' => 'post_date',
 'order' => 'DESC',
 'numberposts' => 5
);
$my_posts = get_posts( $args );
foreach ($my_posts as $post) :
 setup_postdata( $post );
?>
<li><a href="<?php the_permalink();?>"><?php the_title();?></a></li>
<?php
endforeach;
wp_reset_postdata();
?>
</ul>


<p>カテゴリー</p>
<ul>
<?php wp_list_categories(array('title_li'=>'', 'taxonomy'=>$post_type.'_cat', 'show_count'=>1)); ?>
</ul>

<p>月別アーカイブ</p>
<ul>
<?php
 add_filter( 'getarchives_where', 'my_getarchives_where', 10, 2 );
 add_filter( 'get_archives_link', 'my_get_archives_link', 10, 2 );

//直近の12ヶ月分
$my_archive = wp_get_archives('type=monthly&post_type='.$post_type.'&show_post_count=1&limit=12&echo=0');
//年と月を別のフォーマットにかえたいとき利用
//$my_archive = str_replace( array("年"), '.', $my_archive );
//$my_archive = str_replace( array("月"), '', $my_archive );

echo $my_archive;
?>
</ul>

<p>年間アーカイブ</p>
<ul>
<?php
echo wp_get_archives('type=yearly&post_type='.$post_type.'&show_post_count=1');
remove_filter( 'getarchives_where', 'my_getarchives_where');
remove_filter( 'get_archives_link', 'my_get_archives_link' );
?>
</ul>

</pre><p><br />function.php</p><pre>//++++++++++++++++++++++++++++++++++++++++++++++
//カスタム投稿のアーカイブ
//
function my_getarchives_where( $where, $r ) {
 global $my_archives_post_type;
  $my_archives_post_type =get_post_type();
$my_archives_post_type = get_post_type();
 if ( isset($r['post_type']) ) {
 $my_archives_post_type = $r['post_type'];
 $where = str_replace( '\'post\'', '\'' . $r['post_type'] . '\'', $where );
 }
 return $where;
}
 
//
// ?post_type=任意の名前(パラメーター) を追加する
//
function my_get_archives_link( $link_html ) {
 global $my_archives_post_type;
 $my_archives_post_type = get_post_type();
if ($my_archives_post_type != '') {
 $add_link = '&amp;post_type=' . $my_archives_post_type;
 $link_html = preg_replace('@&lt;/a&gt;(.+?)&lt;/li&gt;@', '年&lt;/a&gt;$1&lt;/li&gt;', $link_html);
 }
 return $link_html ;
}