在产品循环中添加和包装产品类别 Wordpress/Woocommerce

Add and wrap product categories Wordpress/Woocommerce in product loop

我使用此代码段在商店和存档页面上的产品循环中显示产品类别:

add_action( 'woocommerce_after_shop_loop_item_title', 'add_product_cat', 2);

function add_product_cat()
{
    global $product;
    $product_cats = wp_get_post_terms($product->id, 'product_cat');
    $count = count($product_cats);
    foreach($product_cats as $key => $cat)
    {
        echo '<span class="add_product_cat">' . $cat->name . '</span>';
    }
}

我想要这个:

<div class="product_cats">
    <span class="add_product_cat">Cat 1</span>
    <span class="add_product_cat">Cat 2</span>
</div>

为此,我使用 jQuery:

jQuery(function(){
    jQuery(".woocommerce li.product").each(function() {
        jQuery(this).find('span.add_product_cat').wrapAll('<div class="product_cats"></div>');
    });
});

如何修改我的 PHP 片段以避免使用 jQuery?

您可以在 foreach 循环之前和之后附加相应的标签:

function add_product_cat()
{
    // ...
    echo '<div class="product_cats">';
    foreach($product_cats as $key => $cat)
    {
        echo '<span class="add_product_cat">' . $cat->name . '</span>';
    }
    echo '</div>';
}

那么您不需要自定义 jQuery 代码来包装内容。