カスタム投稿タイプを使用すると、メニューなどで一覧を取得したり、現在表示中のページとメニューの関連付けなどをする必要が出てくる。
だけど、これが色々面倒くさい。
ちょっとてまどったのでメモ。
自分の作り方では、固定ページにカスタム投稿タイプで作成したページのメニューとして一覧を表示するケースが多い。
その場合、当然ながら固定ページとカスタム投稿タイプには何の関連性もないのでメニューを作ったりするのが少々めんどい。
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にはもっと色々書いているが、メモ用に抜粋した。
このままで動くかな?
もっと楽な方法ないかなー。