Как отображать стоимость 0 или надпись «Бесплатно» рядом с бесплатным способом доставки?

Идея этого поста началось с того, что когда в настройках способа доставки WooCommerce я указал «Самовывоз» со стоимостью 0, доставка вывелась в таком виде:

Методы доставки в корзине WooCommerce
Рядом с бесплатным методом доставки не отображается ни цена ни надпись «Бесплатно».

Меня же попросили, чтобы рядом с бесплатным методом доставки отображалась как минимум нулевая цена, а лучше – слово «Бесплатно».

Возможно ли это сделать без усилий в WooCommerce? Конечно, достаточно только использовать фильтр woocommerce_cart_shipping_method_full_label.

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

add_filter( 'woocommerce_cart_shipping_method_full_label', 'truemisha_free_shipping_label', 10, 2 );
 
function truemisha_free_shipping_label( $label, $method ) {
 
	if ( ! ( $method->cost > 0 ) ) { // если стоимость не больше нуля
		$label .= ': <strong>Бесплатно</strong>';
	}
 
	return $label;
 
}

Если вдруг вместо надписи «Бесплатно» вам захочется отображать нулевую стоимость, то я рекомендую сделать это при помощи функции wc_price(), вот так wc_price( 0 ), тогда WooCommerce сразу отобразит цену в соответствии с настройками, с валютой, с позицией валюты и т.д.

Короче в итоге у меня получилось так:

Надпись бесплатно или нулевая цена рядом с бесплатными способами доставки в WooCommerce

Если вам нелегко даётся WooCommerce, но вы очень хотите в нём разобраться, то рекомендую вам мой видеокурс! 🚀

Миша

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

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

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

Оставить комментарий

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.