#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 для переноса содержимого.