Выводим пользовательские свойства товаров в WooCommerce на странице товара

Сегодняшняя статья о том, как вывести произвольные свойства товара на странице товара в WooCommerce (Для того того, чтобы вывести свойства в корзине, смотрите статью Выводим пользовательские свойства товаров в WooCommerce на странице товара). Реализовывается данный функционал с помощью файла функций вашей темы и полезного хука WooCommerce под названием ‘woocommerce_single_product_summary‘, который позволит вывести свойство товара над кнопкой «Добавить в корзину». Работать будем как обычно с файлом functions.php, а не с файлами шаблона.

Ниже два примера. Первый код выведет одно свойство товара на ваш выбор. Второй же выведет все пользовательские свойства товара для товара.

Выводим одно свойство товара

Этот пример выведет одно свойство товара. Необзодимо дважды изменить ‘version’ в строке 8 на slug (короткую ссылку вашего свойства). По-умолчанию. он выводит название свойства и его значение в формате «Название: значение». Для отображения только значения вытрите строку 18 ниже.

	
/**
* WooCommerce: выводим пользовательское свойство товара над кнопкой "Добавить в корзину" на странице отдельного товара.
*/
function devise_woo_get_pa(){
 
    global $product;
    $attributes = $product->get_attributes();
    $attribute = isset($attributes['version']) ? $attributes['version'] : '';
 
    if ( ! $attribute ) {
        return;
    }
 
    if ( $attribute['is_taxonomy'] ) {
        // backwards compatibility
        $out = implode( ', ', woocommerce_get_product_terms( $product->id, $attribute['name'], 'names' ) );
    } else {
        $out = $attribute['name'] . ': ';
        $out .= $attribute['value'];
    }
 
        echo $out;
}
 
add_action('woocommerce_single_product_summary', 'devise_woo_get_pa');

Выводим все пользовательские свойства товара

	
/**
* WooCommerce: выводим все пользовательские свойства товара над кнопкой "Добавить в корзину" на странице отдельного товара.
*/
function devise_woo_all_pa(){
 
    global $product;
    $attributes = $product->get_attributes();
 
    if ( ! $attributes ) {
        return;
    }
 
    $out = '';
 
    foreach ( $attributes as $attribute ) {
 
        $out .= $attribute['name'] . ': ';
        $out .= $attribute['value'] . '<br />';
 
    }
  
        echo $out;
 
}
  
add_action('woocommerce_single_product_summary', 'devise_woo_all_pa');

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 3.6/5 (18 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Alex_Korolev

    Добрый день.

    Не работает ни один из скриптов! =(

    • дпк

      +1

  • Alex_Korolev

    Никто не ответит?

    • http://web-devise.com/ ADv

      Вы подставляли СВОИ значения в код?

  • Alex_Korolev

    $attribute = isset($attributes[‘version’]) ? $attributes[‘version’] : »;
    в эту строку ставлю свое значение .
    и ничего не выводится.
    а если запустить второй скрипт то выводится
    pa_»имя slug»

  • http://autoprosale.ru/ Denisov Slav

    После вставки вместо атрибутов выскакиет

    pa_light_transmission:
    pa_color:
    pa_ширина:

  • Кирилл

    Точно такая же ситуация. Все свойства вп определяет как термины(если я правильно понял, т.к. Есди сделать var_dump то элемент массива «value» у всех пустой), к слагу автоматически добавляет префикс pa_

  • Ксения

    Для кого актуально, вот здесь рабочий код Example 2
    http://isabelcastillo.com/woocommerce-product-attributes-functions

  • Lyubava

    Можно ли вывести обернуть атрибуты в див и добавить разный стиль к каждому? именно к value ( например использоваь его алиас). спасибо большое

  • Дмитрий Пупынин

    Таже фигня…
    pa_color: pa_fabric:
    pa_size:
    pa_weight:
    pa_equipment:
    pa_filler:
    pa_guarantee:

    Правда если вручную прописывать атрибуты через «Индивидуальные атрибуты» эта фигня пропадает. Но это же жесть прописывать все атрибуты ко всем товара вручную.
    Как исправить ?

  • Дмитрий Пупынин

    Кстати, указанный здесь скрипт у меня не заработал. Я использовал другой

    /** WooCommerce: выводим все свойства товаров списком под каждой единицей на странице корзины*/
    function devise_woo_cart_attributes($cart_item, $cart_item_key){
    $item_data = $cart_item_key[‘data’];
    $attributes = $item_data->get_attributes();
    if ( ! $attributes ) {
    return $cart_item;
    }
    $out = $cart_item . »;
    foreach ( $attributes as $attribute ) {
    $out .= $attribute[‘name’] . ‘: ‘;
    $out .= $attribute[‘value’] . »;
    }
    echo $out;
    }
    add_filter( ‘woocommerce_cart_item_name’, devise_woo_cart_attributes, 10, 2 );

    • Svitlana Tsybulya

      Parse error: syntax error, unexpected ‘&’ in
      $out .= »;

Scroll To Top