Пачка полезных сниппетов для WooCommerce. Часть 7

Выводим товарные категории в классе для body при просмотре товара в WooCommerce

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

add_filter('body_class','add_category_to_single');
<div style="float:right;width:350px;margin:0 0 10px 15px;">
<div id="yandex_rtb_R-A-187781-2"></div>
</div>
function add_category_to_single($classes, $class) {
	if (is_single() ) {
		global $post;
		foreach((get_the_category($post-&gt;ID)) as $category) {
			echo $category-&gt;cat_name . ' ';
			// добавляем slug категории к массиву $classes
			$classes[] = 'category-'.$category-&gt;slug;
		}
	}
	// return the $classes array
	return $classes;
}

Произвольный диапазон цен в ссылке в WooCommerce

При работе над проектом может понадобиться добавить произвольные ссылки, которые будут вести на страницу товара с определенным диапазоном цен (например, http://my.domain.com/shop?min_price=0&max_price=2000)

Ниже приведен модифицированный код woocommerce_price_filter_init из widget-price_filter.php. Функция ниже не подгружает javascript, который выполняет фильтрацию цены в виджете, поэтому если вам нужен работающий виджет, то скрипт придется добавить дополнительно.

Код, как обычно, добавляем в файл functions.php темы:

function my_price_filter_init() {
    global $woocommerce;

    if ( ! is_admin() ) {

        unset( $_SESSION['min_price'] );
        unset( $_SESSION['max_price'] );

        if ( isset( $_GET['min_price'] ) )
            $_SESSION['min_price'] = $_GET['min_price'];

        if ( isset( $_GET['max_price'] ) )
            $_SESSION['max_price'] = $_GET['max_price'];

        add_filter( 'loop_shop_post_in', 'woocommerce_price_filter' );
    }
}
remove_action('init', 'woocommerce_price_filter_init');
add_action( 'init', 'my_price_filter_init' );

Убираем бейдж скидки/распродажи для товаров в WooCommerce

Woocommerce отображает значок скидки на товарах, для которых установлена «Цена со скидкой»:

Remove-Product-Sales-Flash-Icon-Badge-in-WooCommerce[1]

Есть несколько способов избавиться от этих значков:

Способ 1: Использовать только основную цену.

Оставляем поле «Цена со скидкой» пустым.

Woocommerce-Sale-Price[1]

Способ 2. Используем CSS для скрытия значка.

Возьмем http://demo.woothemes.com/ в качестве примера. Открываем Firebug, находим css иконки распродажи.

local-the-css-of-sale-icon-in-firebug[1]

Применяем волшебный код display:none и значок исчезает!

hide-sale-icon-in-woocommerce[1]

Возьмите следующий кусочек CSS кода, вставьте его в файл style.css своей темы, и всё.

.onsale {
    display: none;
}
Способ 3. Основательно убираем исходный код значка скидки

Добавляем следующий код в файл functions.php своей темы:

// Убираем значок "Скидка" со страницы архива товаров
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 20 );

// Убираем значок "Скидка" со страницы карточки товара
remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 20 );

По всем вопросам и отзывам просьба писать в комментарии ниже.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top