Как изменить сообщение о добавлении товара в корзину

Когда вы добавляете товар в корзину на сайте WooCommerce, у вас появляется определённое сообщение (если только конечно вы не делаете это через AJAX на странице каталога).

Стандартное сообщение WooCommerce, что товар добавлен в корзину

И по умолчанию на абсолютно всех интернет-магазинах 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 с нуля на основе готовой вёрстки? Если интересно, то вэлкам на мой видеокурс.

Но наиболее внимательные из вас заметили, что я не задействовал ни одну из переменных, переданных в функцию. Давайте остановимся на этом подробнее:

$message
(строка) HTML сообщения о добавлении товара в корзину. Мы даже можем не создавать с нуля своё, а сделать какие-то изменения уже в существующем, например функцией PHP str_replace().
$products
(массив) Массив из ID товаров, добавленных в корзину и их количеств, например array( 541 => 1, ID ТОВАРА => КОЛ-ВО)
$show_qty
(логическое) Должно ли в сообщении отображаться количество добавляемых товаров? Когда да, когда нет – решает WooCommerce, мы же лишь можем решать, использовать ли эту настройку и тоже отображать количество в тех ситуациях или нет.

Класс! Теперь, с этими новыми знаниями предлагаю немного изменить наше сообщение:

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 .= 'и &laquo;' . get_the_title( $product_id ) . '&raquo;';
			} else {
				$message .= '&laquo;' . get_the_title( $product_id ) . '&raquo;, ';
			}
 
		}
		$message .= ' у вас в корзине!';
	} else {
		$products = array_keys( $products );
		$message .= '&laquo;' . get_the_title( $products[0] ) . '&raquo; у вас в корзине!';
	}
 
	return $message;
 
}

И в итоге:

Изменённое сообщение о добавлении товаров в корзину

Фак, только сейчас понял, что добавил лишнюю запятую… но разве это так важно? 😁

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с вашим сайтом или может даже разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда сделаем вам всё на лучшем уровне.

Комментарии — 11

Комментирование этого поста более не доступно.
  • George 1 мая 2020 #

    Спасибо за полезный материал!

    • Миша 1 мая 2020 #

      Всегда пожалуйста!

  • Оксана 3 августа 2020 #

    Можно ли поменять зеленый цвет на другой? не гармонирует(

    • Миша 3 августа 2020 #

      Конечно, Оксана, какой бы цвет вы хотели?

  • Makson 9 августа 2020 #

    Спасибо за материал!
    Возможно ли сделать Товар... в количестве ... по цене ... добавлен в корзину?

    • Миша 9 августа 2020 #

      Да, конечно.

      Цену можете получить так:

      $product = wc_get_product( $product_id ); 
      $price = $product->get_price();
      • Makson 9 августа 2020 #

        Большое спасибо!

      • Makson 9 августа 2020 #

        А если товар вариативный?

      • Миша 11 августа 2020 #

        Данных о выбранной вариации не присутствует в хуке.

  • Игорь 15 августа 2020 #

    Здравствуйте! Отличная статья и очень вовремя - как раз работаю над этим)
    Подскажите, а как возможно добавить атрибут товара в сообщение? Что то вроде «33 {pa_attribute} x Товар добавлен в вашу корзину». Странное дело, но на просторах, не нашел ни одной статьи на данную тему..

    • Миша 19 августа 2020 #

      Здравствуйте,

      наверняка как-то и можно, но обратите внимание, что в функции хука wc_add_to_cart_message_html этих данных нет. Если найдёте решение, буду рад, если вы оставите его тут в комментариях, заодно обсудим его.