0

私は 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->nameandだけのよう$cat->slugです。

それに加えて、私の論理にも欠陥があると確信しています。誰かが私をここで正しい方向に向かわせることができますか?

ありがとう、ありがとう、ありがとう!

4

1 に答える 1