Добавление и перенос категорий продуктов WordPress / Woocommerce в цикл продуктов

#php #wordpress #loops #woocommerce #product

#php #wordpress #петли #woocommerce woocommerce #продукт

Вопрос:

Я использую этот фрагмент для отображения категорий товаров в цикле товаров на страницах магазина и архивов:

 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?

Ответ №1:

Вы можете просто добавить соответствующий тег до и после цикла 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 для переноса содержимого.