カスタム投稿時、wp_list_pages() のアクティブページに current_page_item のクラスを付与する

WordPressのテンプレートタグ wp_list_pages() は、
ページタイトルの一覧を表示させ、アクティブページ(現在表示しているページ)があれば自動的に class=”current_page_item” を追加する機能が付いています。

ところが、カスタム投稿では、この class=”current_page_item” がつきません。
そこでカスタム投稿でも class=”current_page_item” を付与する方法をご紹介いたします。

方法は下記コードを functions.php に記述します。
また親ページのリンクにも class=”current_page_parent” が付与されるという便利さです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// カスタム投稿時、wp_list_pages() に current_page_item を付与 
function kct_page_css_class( $css_class, $page, $depth, $args, $current_page ) {
	if ( !isset($args['post_type']) || !is_singular($args['post_type']) )
		return $css_class;
	global $post;
	$current_page  = $post->ID;
	$_current_page = $post;
	_get_post_ancestors($_current_page);
	if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page->ancestors) )
		$css_class[] = 'current_page_ancestor';
	if ( $page->ID == $current_page )
		$css_class[] = 'current_page_item';
	elseif ( $_current_page && $page->ID == $_current_page->post_parent )
		$css_class[] = 'current_page_parent';
	return $css_class;
}
add_filter( 'page_css_class', 'kct_page_css_class', 10, 5 );

動作環境: WordPress 3.4.2
参考サイト: http://wordpress.stackexchange.com/questions/6333/adding-class-current-page-item-for-custom-post-type-menu

  • LINEで送る
  • Clip to Evernote
  • このエントリーをはてなブックマークに追加