Определенные атрибуты в списке товаров WooCommerce
В интернет-магазине на WooCommerce я использую код, который выводит определенные атрибуты товаров на страницах архива/категорий.
add_action( 'woocommerce_before_shop_loop_item_title', 'new_template_loop_product_meta', 20 );
function new_template_loop_product_meta() {
global $product;
$attrs_by_cats = [
20 => [ 'pa_size' ],
];
$attr_list = [
'Размер' => 'pa_size',
];
if ( ! is_object( $product ) ) {
$product = wc_get_product( get_the_id() );
}
$cats = $product->get_category_ids();
if ( ! is_array( $cats ) ) {
return;
}
$attrs = [];
foreach ( $cats as $cat ) {
if ( isset( $attrs_by_cats[ $cat ] ) ) {
$attrs[] = $attrs_by_cats[ $cat ];
}
}
$allowed_attrs = array_unique( array_merge( [], ...$attrs ) );
echo '<div class="">';
foreach ( $attr_list as $attr_title => $attr_name ) {
if ( in_array( $attr_name, $allowed_attrs, true ) ) {
show_attribute( $product, $attr_title, $attr_name );
}
}
echo '</div>';
}
function show_attribute( $product, $attr_title, $attr_name ) {
if ( 'sku' === $attr_name ) {
$attr = (string) $product->get_sku();
} else {
$attr = $product->get_attribute( $attr_name );
}
if ( '' === $attr ) {
return;
}
echo '<span class="">' . esc_html( $attr ) . '</span>';
}
В данный момент, код выводит атрибут "Размер" одним списком/массивом, через запятую. Я же хотел бы показать размеры по отдельности и без запятой, т.е. каждый из размеров обернуть в span, а не все вместе.
Как это можно реализовать? Буду рад помощи с кодом!