Обновлено - Проблема возникает из следующей строки, где значение атрибута атрибута продукта всегда для одного и того же атрибута продукта:
$value = $product->get_attribute( 'pa_set' );
, и это должно быть вместо этого:
$value = $product->get_attribute( $taxonomy );
Полный пересмотренный код будет выглядеть так:
add_action('woocommerce_after_shop_loop_item','display_loop_product_attribute' );
function display_loop_product_attribute() {
global $product;
$product_attributes = array('pa_set', 'pa_team'); // Defined product attribute taxonomies.
$attr_output = array(); // Initializing
// Loop through the array of product attributes
foreach( $product_attributes as $taxonomy ){
if( taxonomy_exists($taxonomy) ){
if( $value = $product->get_attribute($taxonomy) ){
// The product attribute label name
$label_name = get_taxonomy( $taxonomy )->labels->singular_name;
// Storing attributes for output
$attr_output[] = '<span class="'.$taxonomy.'">'.$label_name.': '.$value.'</span>';
}
}
}
// Output attribute name / value pairs separate by a "<br>"
echo '<div class="product-attributes">'.implode('<br>', $attr_output).'</div>';
}
Код находится в файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.
Таргетинг Страницы архива категории продукта:
Вы будете использовать условный тег is_product_category()
внутри функции наоператор IF
…
Для страниц архива определенной категории продуктов вы можете установить их , как описано здесь внутри функции в массиве, например:
if( is_product_category( array('chairs', 'beds') ) {
// Here go the code to be displayed
}
Вам просто нужно установить нужные слагаемые категорий продуктов в массиве…
Связанные: Показать атрибуты продуктов WooCommerce в пользовательских архивах домашних и категорий продуктов