カスタム投稿タイプのリスト

カスタム投稿タイプを使用すると、メニューなどで一覧を取得したり、現在表示中のページとメニューの関連付けなどをする必要が出てくる。

だけど、これが色々面倒くさい。
ちょっとてまどったのでメモ。

自分の作り方では、固定ページにカスタム投稿タイプで作成したページのメニューとして一覧を表示するケースが多い。
その場合、当然ながら固定ページとカスタム投稿タイプには何の関連性もないのでメニューを作ったりするのが少々めんどい。

function.php内
$post_idはpost_idを渡す

function pageLists($post_id){
$post_type = get_post_type($post_id);
$loop = new WP_Query( array( 'post_type' => $post_type ) );
echo '<ul>';
while ( $loop->have_posts() ) : $loop->the_post();
//送られてきたpost_idからcurrent_postを設定するのが目的
//整数型にキャスト
$temp_id = (int)($loop->posts[$i]->ID);
if ($temp_id == $post_id) $current_str = ' current_page_item' ; else $current_str = '';
echo '<li class="page_item' . $current_str . '"><a href="';
the_permalink();
echo '">';
the_title();
echo '</a></li>';
$i++;
endwhile;
echo '</ul>';
wp_reset_query();
}

$loopを見ると、$loop->posts[$i]->IDに投稿IDが格納されているので、それを整数型にキャストする。
パラメータとして渡された現在表示中の投稿IDと一致すれば、liタグのclassにcurrent_page_itemを追加する。
という流れ。

current_page_itemというクラスは、wp_list_pagesを使ったときに現在表示中のページのリンクに自動的に付与されるclassなので合わせておくと楽。

実際書いたfunctionにはもっと色々書いているが、メモ用に抜粋した。
このままで動くかな?

もっと楽な方法ないかなー。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする