Когда вы добавляете товар в корзину на сайте WooCommerce, у вас появляется определённое сообщение (если только конечно вы не делаете это через AJAX на странице каталога).
И по умолчанию на абсолютно всех интернет-магазинах WooCommerce это сообщение выглядит одинаково. Как насчёт того, чтобы его изменить?
Для этого существует фильтр-хук wc_add_to_cart_message_html
и мы можем спокойно к нему подключиться например в functions.php
текущей или дочерней темы.
add_filter( 'wc_add_to_cart_message_html', 'truemisha_tovar_v_korzine', 10, 3 ); function truemisha_tovar_v_korzine( $message, $products, $show_qty ) { return 'Готово! Товар в корзине.' ; }
Работа с хуками – цветочки, это сможет каждый.
А как насчет того, чтобы создать собственную тему WooCommerce с нуля на основе готовой вёрстки? Если интересно, то вэлкам на мой видеокурс.
Но наиболее внимательные из вас заметили, что я не задействовал ни одну из переменных, переданных в функцию. Давайте остановимся на этом подробнее:
str_replace()
.array( 541 => 1, ID ТОВАРА => КОЛ-ВО)
Класс! Теперь, с этими новыми знаниями предлагаю немного изменить наше сообщение:
add_filter( 'wc_add_to_cart_message_html', 'truemisha_tovar_v_korzine_new', 10, 3 ); function truemisha_tovar_v_korzine_new( $message, $products, $show_qty ) { $message = 'Огонь! '; if( 1 < count( $products ) ) { $message .= 'Товары '; $iteration = 0; foreach( $products as $product_id => $qty ) { $iteration++; if( $iteration == count( $products ) ) { $message .= 'и «' . get_the_title( $product_id ) . '»'; } else { $message .= '«' . get_the_title( $product_id ) . '», '; } } $message .= ' у вас в корзине!'; } else { $products = array_keys( $products ); $message .= '«' . get_the_title( $products[0] ) . '» у вас в корзине!'; } return $message; }
И в итоге:
Фак, только сейчас понял, что добавил лишнюю запятую… но разве это так важно? 😁
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
Спасибо за полезный материал!
Всегда пожалуйста!
Можно ли поменять зеленый цвет на другой? не гармонирует(
Конечно, Оксана, какой бы цвет вы хотели?
Спасибо за материал!
Возможно ли сделать Товар... в количестве ... по цене ... добавлен в корзину?
Да, конечно.
Цену можете получить так:
Большое спасибо!
А если товар вариативный?
Данных о выбранной вариации не присутствует в хуке.
Здравствуйте! Отличная статья и очень вовремя - как раз работаю над этим)
Подскажите, а как возможно добавить атрибут товара в сообщение? Что то вроде «33 {pa_attribute} x Товар добавлен в вашу корзину». Странное дело, но на просторах, не нашел ни одной статьи на данную тему..
Здравствуйте,
наверняка как-то и можно, но обратите внимание, что в функции хука
wc_add_to_cart_message_html
этих данных нет. Если найдёте решение, буду рад, если вы оставите его тут в комментариях, заодно обсудим его.Доброго дня всем! Прошу совета. Проблема касается вывода сообщения на странице каталога, при условии, что товар отсюда добавляется в корзину посредством ajax.
Если добавление в корзину без использования ajax, т.е. происходит переход по ссылке вида ?add-to-cart=3186, то все прекрасно работает, выводится и настраивается. А если использовать ajax, то ничего не выводится.
Пробовала использовать хук woocommerce_add_to_cart и внутри функцию wc_print_notice(). Не работает.
Копание в интернете привело меня к мысли, что при использовании ajax для добавления в корзину сделать вывод соответствующего сообщения средствами wc нельзя.
У кого больше опыта, скажите, пожалуйста: можно это сделать или нельзя? Очень хочется определиться. Если можно, то как? Хотя бы в каком направлении думать?
Или искать решение этой проблемы средствами JS, обрабатывая событие "added-to-cart"? Как тогда определить, клик на какой из ссылок "В корзину" вызвал это конкретное событие?
Заранее благодарна за любые совет, мнение и помощь!
PS. Опыта в разработке для wc пока не так много. Так что прошу простить, если что-то сформулировала некорректно.
Анна, доброго дня!
конечно:
P.S. Не забывайте про
jQuery( function( $ ) { ... } );
, если необходимо.