web-dev-qa-db-ja.com

現在のカテゴリの下にインデントの子リストを持つカテゴリリスト

私は自分のカスタム分類のすべてのトップレベルのカテゴリーを表示するウィジェットを作成しようとしています。カテゴリの1つをクリックすると、そのページに移動して現在のカテゴリが横のウィジェットに太字で表示されます。私はwp_list_categories()を使ってクラス.current-catをスタイリングすることによってこれをすることができました。

私が今したいのは、現在のカテゴリの子をインデントして現在の太字のカテゴリの下に表示することです。

enter image description here 

これを行うにはどうすればいいですか。私はまだwp_list_categories()を使うことができますか。

私が現在その関数に使用している引数は、

$args = array(
    "taxonomy" => "kategori",
    "title_li" => "",
    "orderby" => "name",
    "order" => "ASC",
    "parent"  => 0
);
1
soomro

wp_list_categories()とちょっとしたカスタムCSSで、必要なものを実現できるはずです。

デフォルトのWPカテゴリとカスタム分類法でこれをテストしました。

まず、wp_list_categories()関数から"parent" => 0を削除します。私はあなたがどこからこれを得たのかわからない。

また、リスト関数の周りに<ul>を折り返すようにしてください。 wp_list_categories()<li>のみを生成しますが、それを包むラッパーは生成しません。

私はこのコードをテストしました:

$args = array(
    'taxonomy' => 'kategori',
    'title_li' => '',
    'orderby' => 'name',
    'order' => 'ASC',
);

echo '<ul class="category-list">';

wp_list_categories( $args ); 

echo '</ul>';

それであなたはすでにすべてのカテゴリのインデントされた、階層的なリストを見るでしょう。 (ええ、子供たちが字下げされるかどうかはあなたのテーマCSSにもよります)

カテゴリがアクティブな場合(つまり、現在カテゴリページにいる場合)、そのカテゴリの単一のリスト項目には特別なクラス.current-catがあります。

そのクラスでは、インデントされたサブアイテム(クラス.childrenを持つul要素)を単に隠したり表示したりできます。

/* hide all sub menus */
.category-list ul.children {display:none;}

/* only show sub menus on the current cat */
.category-list .current-cat ul.children {display:block;}

更新: カスタム分類法でこれをテストしたところ、問題なく動作しています。上記の回答を編集しました。

また、実際にいくつかのカスタム分類法用語が追加された投稿があることを確認してください。空の分類用語があるだけでは何も表示されません。


更新: カテゴリの子ページにいる場合は、CSSも使用できます。

wp_list_categories()の親メニュー項目は、子を表示している場合は.current-cat-parentという特別なクラスも取得します。

だからあなたは使用することができます

.category-list .current-cat-parent ul.children {display:block;}

またはフルスニペット

.category-list .current-cat ul.children,  
.category-list .current-cat-parent ul.children {display:block;}

ただし、この方法では、wp_list_categories()が折りたたまれてしまい、特別なクラスが生成されなくなります(カテゴリビューにいないため)。

この<taxonomyslug>-<termslug>のような現在の分類法/用語に基づいていくつかのカスタムクラスを生成し、これらのクラスを現在の.post要素に追加するので、おそらくpostクラスがあなたを助けることができます。

例えば:

kategori-kategoriterm
0
LWS-Mo