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

Когда вы добавляете товар в корзину на сайте 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;
 
}

И в итоге:

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

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

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

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

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

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал