私は WooCommerce ショッピング カート プラグインを使用しており、さらに制御するために、デフォルトの WooCommerce テンプレートのファイル オーバーライドを使用して独自のテーマを作成しました。そこで、すべての製品カテゴリを一覧表示するサイドバーをゼロから作成しました。それはうまくいきます:
<ul class="sidebar-list">
<?php
$all_categories = get_categories( 'taxonomy=product_cat&hide_empty=0&hierarchical=1' );
foreach ($all_categories as $cat) {
echo '<li><a href="'. get_term_link($cat->slug, 'product_cat') .'"><span>'. $cat->name .'</span></a>';
}
?>
</ul>
ただし、上記のforeach
ループは、「現在のカテゴリ」属性 (リスト項目のクラスなど) を出力しません。そのため、現在の製品カテゴリを取得し、foreach ループ内で表示されているカテゴリと比較し、一致する場合は「現在の」クラスをリスト項目に追加する PHP を作成しようとしました。
<ul class="sidebar-list">
<?php
$all_categories = get_categories( 'taxonomy=product_cat&hide_empty=0&hierarchical=1' );
$terms = get_the_terms( $post->ID, 'product_cat' );
foreach ($terms as $term) {
$product_cat = $term->term_id;
break;
}
foreach ($all_categories as $cat) {
echo '<li class="';
if ( $product_cat == $cat->id ) {
echo "current";
}
echo '"><a href="'. get_term_link($cat->slug, 'product_cat') .'"><span>'. $cat->name .'</span></a>';
}
?>
</ul>
これをここに投稿することから収集できるように、機能しません。
を取得することさえできないという問題があることはわかってい$cat->id
ます。私がアクセスできるのは$cat->name
andだけのよう$cat->slug
です。
それに加えて、私の論理にも欠陥があると確信しています。誰かが私をここで正しい方向に向かわせることができますか?
ありがとう、ありがとう、ありがとう!