• Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Решено Вывод веса вариативного товара woocommerce

Image CMS

Arhidiablo

Новичок
#1
Доброго времени суток, уже неделю голову ломаю, перерыл весь яндекс и гугл. Есть вариативный товар, есть несколько вариантов, в зависимости от выбора меняется вес товара. Не могу вывести вес на страницу товара.
Сначало был уверен и шел на принцип ( зачем грузить плагином, ведь мне нужно вывести всго одно значение ), пытался вытащить через глобальные переменые. На просторах интернета находил решения но ни одно не дало нужный результат, я так пологаю из за того, что они были 12-13 года, а плагин не стоит на месте, все меняется.
Позже нарыл плагин от сафали ( VARIATION DETAILS ON PAGE PRODUCT (?) ), но после установки плагина вес так и не стал выводится, думал проблема, в том, что я перекраивал плагин, создал слепок измененого плагина поставил чистый - не работает, запили пару стандартных тем вукомерц, тоже не выводится. Заного перепробовал варианты которые находил прописывать хуки и выводить через шорт коды. Дошел до того, что начал лазать по документации woocommerce и забугорным форумам. Подскажите может есть у кого решение этого вопроса?

Ashampoo_Snap_2016.07.24_18h46m46s_018_.png Ashampoo_Snap_2016.07.24_18h49m49s_020_.png

На Вашем форуме находил похожую тему но она к сожалению не помогла решить вопрос.

Вобщем сам вопрос, как вывести вес вариативного товара ? ( приветствуются любые варианты )

P.S. Даже делал чистый ВП + плагин вуукомерц + дефолтная тема/готовая фрии тема, очень много вариантов перебрал, толкового пока не нашел.
 

searchingman

Гуру
Местный
#4
Доброго времени суток, уже неделю голову ломаю, перерыл весь яндекс и гугл. Есть вариативный товар, есть несколько вариантов, в зависимости от выбора меняется вес товара. Не могу вывести вес на страницу товара.
Сначало был уверен и шел на принцип ( зачем грузить плагином, ведь мне нужно вывести всго одно значение ), пытался вытащить через глобальные переменые. На просторах интернета находил решения но ни одно не дало нужный результат, я так пологаю из за того, что они были 12-13 года, а плагин не стоит на месте, все меняется.
Позже нарыл плагин от сафали ( VARIATION DETAILS ON PAGE PRODUCT (?) ), но после установки плагина вес так и не стал выводится, думал проблема, в том, что я перекраивал плагин, создал слепок измененого плагина поставил чистый - не работает, запили пару стандартных тем вукомерц, тоже не выводится. Заного перепробовал варианты которые находил прописывать хуки и выводить через шорт коды. Дошел до того, что начал лазать по документации woocommerce и забугорным форумам. Подскажите может есть у кого решение этого вопроса?


На Вашем форуме находил похожую тему но она к сожалению не помогла решить вопрос.

Вобщем сам вопрос, как вывести вес вариативного товара ? ( приветствуются любые варианты )

P.S. Даже делал чистый ВП + плагин вуукомерц + дефолтная тема/готовая фрии тема, очень много вариантов перебрал, толкового пока не нашел.
Вы правы. Не нашел в интернете решения. Пришлось немного поизучать исходники плагина.

1. Чтобы вывести значение вариации используется шаблон \wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variation.php. Копируем его правильно в свою тему и начинаем править, добавив вывод веса рядом с ценой.
HTML:
<div class="woocommerce-variation-price">
        {{{ data.variation.price_html }}} {{{ data.variation.weight }}}
    </div>
В итоге получили, что когда значение веса вариации заполнено, то выводится значение с единицей веса (см. скриншот).
Если значение веса вариации не заполнено, то выводится пустое значение с единицей веса. (см. скриншот).
Желательно, чтобы вывод был более "дружественным" и если вес не указан, то ничего не выводилось.

2. Для этого добавляем в functions.php своей темы следующий код
PHP:
function my_woocommerce_available_variation($available_variation, $product, $variation) {
    $available_variation['weight'] = $variation->has_weight() ? "Вес товара: ".$variation->get_weight()." гр." : "";
    return $available_variation;
}
add_filter( 'woocommerce_available_variation', 'my_woocommerce_available_variation', 20, 3 );
В итоге при указанном весе вариации вывод веса будет следующим (см. скриншот). При пустом значении веса вариации информации о весе не будет вообще.

Таким же образом можно выводить другие параметры вариации, н-р, артикул или габариты.
 
Последнее редактирование:

Arhidiablo

Новичок
#5
-Vladislav- Усложняю не я, а подписанное заказчиком и не преклонное ТЗ :) Но в любом случае, благодарю за информацию !

searchingman - благодарю за информацию, изначально добавил все это в своей теме, не заработало, в альтернативной скаченной теме, не заработало, откатил чистый плагин, не заработало, но на тестовом домине поднял WP + Woocommerce на дефолтной теме ( Twenty Sixteen ), и стоило сделать первый шаг:

Вы правы. Не нашел в интернете решения. Пришлось немного поизучать исходники плагина.

1. Чтобы вывести значение вариации используется шаблон \wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variation.php. Копируем его правильно в свою тему и начинаем править, добавив вывод веса рядом с ценой.
HTML:
<div class="woocommerce-variation-price">
        {{{ data.variation.price_html }}} {{{ data.variation.weight }}}
    </div>
В итоге получили, что когда значение веса вариации заполнено, то выводится значение с единицей веса (см. скриншот).
Если значение веса вариации не заполнено, то выводится пустое значение с единицей веса. (см. скриншот).
Желательно, чтобы вывод был более "дружественным" и если вес не указан, то ничего не выводилось.
Ashampoo_Snap_2016.07.25_13h06m26s_021_.png

И все шикарно отобразилось, я так пологаю, что у меня может быть или ковырнул в ВП чего лишнего ( что то тестил и не, подтер ), или конфликт плагинов ( сейчас на тестовый начну тулить все плагины которые в работе, пошагово ), чуть позже отпишу в чем была трабла !
 

Arhidiablo

Новичок
#6
Обнаружил проблему, вернее ее источник. Изначально хотел на тестовом сайте устанавливать плагины которые стоят на сайте проекта, но пошел от обратного, забэкапил боевой проект и начал отключать плагины. Вся соль была в плагине WC Variations Radio Buttons который передавливает selectы в radiobuttonы, не совсем понимаю такую взаимосвязь, но думаю проблема, в том, что плагин, что выше указанный метод использует одинаковые фильтры?

Ashampoo_Snap_2016.07.26_13h31m03s_023_.png Ashampoo_Snap_2016.07.26_13h31m54s_024_.png
 

searchingman

Гуру
Местный
#7
Обнаружил проблему, вернее ее источник. Изначально хотел на тестовом сайте устанавливать плагины которые стоят на сайте проекта, но пошел от обратного, забэкапил боевой проект и начал отключать плагины. Вся соль была в плагине WC Variations Radio Buttons который передавливает selectы в radiobuttonы, не совсем понимаю такую взаимосвязь, но думаю проблема, в том, что плагин, что выше указанный метод использует одинаковые фильтры?

Посмотрел плагин WC Variations Radio Buttons . Плагин для вывода использует свой шаблон \wp-content\plugins\wc-variations-radio-buttons\templates\single-product\add-to-cart\variable.php и подменяет JS на свой \wp-content\plugins\wc-variations-radio-buttons\assets\js\frontend\add-to-cart-variation.js, который не использует шаблон \wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variation.php

Исправить ситуацию можно правкой \wp-content\plugins\wc-variations-radio-buttons\assets\js\frontend\add-to-cart-variation.js. Заменить
PHP:
$single_variation.html( variation.price_html + variation.availability_html );
на
PHP:
$single_variation.html( variation.price_html + variation.availability_html + variation.weight );
После этого вес отображается (см. скриншот).
 

Arhidiablo

Новичок
#8
Посмотрел плагин WC Variations Radio Buttons . Плагин для вывода использует свой шаблон \wp-content\plugins\wc-variations-radio-buttons\templates\single-product\add-to-cart\variable.php и подменяет JS на свой \wp-content\plugins\wc-variations-radio-buttons\assets\js\frontend\add-to-cart-variation.js, который не использует шаблон \wp-content\plugins\woocommerce\templates\single-product\add-to-cart\variation.php

Исправить ситуацию можно правкой \wp-content\plugins\wc-variations-radio-buttons\assets\js\frontend\add-to-cart-variation.js. Заменить
PHP:
$single_variation.html( variation.price_html + variation.availability_html );
на
PHP:
$single_variation.html( variation.price_html + variation.availability_html + variation.weight );
После этого вес отображается (см. скриншот).
Все никак не зайду поблагодарить ! Очень выручили ! Низкий поклон Вам !
P.S. Если честно, не пойму почему так сложна реализация вывода веса, учитывая, что это поле изначально заложено в плагине, и что бы его вытащить нужно как минимум бубен и три поколения шаманов в роду :D
 

angelpnz

Новичок
#9
Спасибо за инструкцию, тоже пригодилась!

Подскажите пожалуйста, как вывести итоговый вес в корзине, главное еще вывод в самом заказе (чтоб менеджер смог подобрать курьера)
Заранее спасибо!
 

bowa

Новичок
#10
Может кто подскажет?! Как вывести вес товара рядом с ценой?
Что бы везде, если это вариативный товар, отображалась не цена от и до....
а именно:
50 г. - 300 р.
100 г. 500 р.

Возможно ли такое?!
 

bowa

Новичок
#12
Да, спасибо. Плагин не дорогой и очень функциональный, но на сколько я смог увидеть в демо там нужное мне выводится только в карточке товара.
А мне требуется и в категориях....
 

vladegg

Форумчанин
#15
Согласен, буду пробовать, спасибо! Но если вдруг кто знает как это сделать без плагина?! Подскажите...
Нашел вот такую информацию и вроде как о том что мне надо... но там ни понятно совершенно (((
http://webreason.ru/vyvod-atributov-tovara-woocommerce/
Не захламляйте категории таким колличеством перелинковок атрибутов. Я уверен что ваш сео фильтр это не осилит. TM Extra Product Options. внутри кейса сделает всё что нужно вплане вариаций. Я на базе этого плагина составлял генератор торта на заказ