Wordpress(3.4)&テーマ:TwentyEleven、での質問です。

カテゴリーを親・子でいくつか作りました。

ウィジェットに表示する際、デフォルトでは「親」だけの表示
その「親」をクリックすると「子」が展開する、
という風にしたいのですが、どこいじればいいのかわかりません。
例:親「東京都」子「足立区」「杉並区」「練馬区」
デフォルトで「東京都」だけ表示されている。
「東京都」をクリックすると
東京都
 足立区
 杉並区
 練馬区
と表示される。

「category.php」のどこか、かとも思いましたがわかりません。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2012/12/26 10:25:03

ベストアンサー

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351

ポイント50pt

ウィジェットの設定で「階層を表示」にチェックを入れて階層が分かるようにリスト表示している事が前提条件になります。

1.以下のコードをテーマの「functions.php」に追記します。

function display_current_category_children($category_lists) {
	if(is_category()) {
		$category_lists = preg_replace('!(<li class="[^"]+ current-cat(?:-parent)??"><a[^>]+>[^<]+</a>\s*?(?:\([\d]+?\))?\r*\n*<ul class=\'children)\'>!u', '$1 current-children\'>', $category_lists);
	}
	return $category_lists;
}
add_filter( 'wp_list_categories', 'display_current_category_children' );



2.「style.css」に以下のCSSを追記します。(※優先順位が高くなるように最後に追記します。)

ul.children {
	display: none;
}
ul.current-children {
	display: block;
}



※親・子の2階層まででしか確認していませんので、3階層目以下で動作しない場合は返信で知らせてください。

id:kohhi

ありがとうございました。できました。

2012/12/26 10:51:19

その他の回答1件)

id:rouge_2008 No.1

回答回数595ベストアンサー獲得回数351ここでベストアンサー

ポイント50pt

ウィジェットの設定で「階層を表示」にチェックを入れて階層が分かるようにリスト表示している事が前提条件になります。

1.以下のコードをテーマの「functions.php」に追記します。

function display_current_category_children($category_lists) {
	if(is_category()) {
		$category_lists = preg_replace('!(<li class="[^"]+ current-cat(?:-parent)??"><a[^>]+>[^<]+</a>\s*?(?:\([\d]+?\))?\r*\n*<ul class=\'children)\'>!u', '$1 current-children\'>', $category_lists);
	}
	return $category_lists;
}
add_filter( 'wp_list_categories', 'display_current_category_children' );



2.「style.css」に以下のCSSを追記します。(※優先順位が高くなるように最後に追記します。)

ul.children {
	display: none;
}
ul.current-children {
	display: block;
}



※親・子の2階層まででしか確認していませんので、3階層目以下で動作しない場合は返信で知らせてください。

id:kohhi

ありがとうございました。できました。

2012/12/26 10:51:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません