Отображение значения отдельного атрибута товара на странице магазина (Woocommerce)

2 нояб. 2016 г., 01:22:56
Просмотры: 53.5K
Голосов: 6

Я пытаюсь вывести значение одного атрибута ('size') на странице магазина. Я использовал следующий код для отображения всех значений, пытался адаптировать его для отображения одного атрибута, но безуспешно...

Можете, пожалуйста, помочь адаптировать код, чтобы отображать только значения атрибута 'size'?

// Получаем атрибуты
$attributes = $product->get_attributes();
// Начинаем цикл
foreach ( $attributes as $attribute ) : 
    // Проверяем и выводим, адаптировано из /templates/single-product/product-attributes.php
    if ( $attribute['is_taxonomy'] ) {
        $values = wc_get_product_terms( $product->id, $attribute['name'], array( 'fields' => 'names' ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    } else {
        // Преобразуем вертикальные черты в запятые и отображаем значения
        $values = array_map( 'trim', explode( WC_DELIMITER, $attribute['value'] ) );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    }
endforeach;

Можете, пожалуйста, подсказать, как это модифицировать

0
Все ответы на вопрос 2
8
11

Просто используйте global $product, затем метод get_attribute() этого объекта товара, как показано ниже:

$size = $product->get_attribute( 'pa_size' );

Также вы можете получить это значение с помощью следующего кода:

global $product;
$size = array_shift( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) );

Помните, что вам обязательно нужно использовать global $product.

2 нояб. 2016 г. 06:35:32
Комментарии

Спасибо, а как тогда отобразить значения (разделенные пробелом)?

nadyawell nadyawell
2 нояб. 2016 г. 16:06:25

Я не понял, что вы имеете в виду под "разделенными пробелами"!! И если этот ответ вам помог, пожалуйста, отметьте его как принятый.

CodeMascot CodeMascot
2 нояб. 2016 г. 16:36:14

Он помог, спасибо. У меня просто возникли трудности с правильным отображением значений в шаблоне. Можете подсказать, как их вывести?

nadyawell nadyawell
2 нояб. 2016 г. 16:39:59

Можешь показать ссылку или скриншот, как ты хочешь их отобразить? @user3767576

CodeMascot CodeMascot
2 нояб. 2016 г. 16:41:35

http://nadinka.webd.pl/modafirma/category/clothing/ - при наведении на изображение товара появляется блок "Available sizes", я хочу отображать там все значения размеров, привязанные к товару. Я пытался вывести их через $echo, но отображается только первое значение (а у каждого товара их несколько)

nadyawell nadyawell
2 нояб. 2016 г. 16:48:16

Понял. Сейчас немного занят. Дай мне немного времени. Я вернусь к тебе с ответом, хорошо, друг?

CodeMascot CodeMascot
2 нояб. 2016 г. 16:59:14

Код, который сработал для меня: $size = $product->get_attribute( 'pa_size' ); global $product; $size = array_values( wc_get_product_terms( $product->id, 'pa_size', array( 'fields' => 'names' ) ) ); $prodsizes=implode(", ",$size); echo $prodsizes;

nadyawell nadyawell
2 нояб. 2016 г. 22:01:48

Чтобы отобразить конкретный атрибут под названием "Габариты товара":

add_action( 'woocommerce_single_product_summary', 'display_product_formated_dimensions_table', 25 );

function display_product_formated_dimensions_table(){ global $product;

$item_dimensions = $product->get_attribute( 'Item Dimensions' ); if ( $product->has_attributes() ) { echo '<table class="shop_attributes"><tr> <th>' . __( 'Габариты товара', 'woocommerce' ) . '</th> <td class="product_dimensions">' . esc_html( $item_dimensions ) . '</td> </tr></table>'; } }

Antebios Antebios
3 дек. 2020 г. 07:32:21
Показать остальные 3 комментариев
1
-1
$product = wc_get_product();
echo $product->get_attribute( 'Размер' );
16 июл. 2018 г. 10:53:12
Комментарии

Не могли бы вы объяснить, почему это является ответом?

Krzysiek Dróżdż Krzysiek Dróżdż
16 июл. 2018 г. 12:00:07