/ Сайтостроение / Плагины / Категория товаров NEW

Категория товаров NEW

02.02.2019

59

Если у нас большой интернет-магазин с множеством подкатегорий, и периодически появляются новые, то дополнительное внимание к этому можно привлечь лэйблом NEW. По дате мы этот функционал реализовать не сможем т.к. у терминов таксономий отсутствует этот параметр, создадим включение этой функции вручную.

Добавить slug к классам категории

Изначально функция прописывает только product-category и product, а также first и last. Расширим это, добавив класс в виде slug категории:

// Добавить класс к подкатегориям товаров в архиве
add_filter( 'product_cat_class' , 'add_class_to_category_list_element', 10, 3 );
function add_class_to_category_list_element( $classes, $class, $category ) {
    if( is_object( $category ) )
        $classes[] = $category->slug;
    return $classes;
}

Этот вывод классов работает для категорий, подкатегорий и для вывода категорий через шорткоды WC.

Поле checkbox для категории товара

Создадим поле checkbox для терминов таксономии категория товара (+ вывод этого поля при добавлении нового термина)

//Создание метаполя
add_action('product_cat_add_form_fields', 'wh_taxonomy_add_new_meta_field', 10, 1);
add_action('product_cat_edit_form_fields', 'wh_taxonomy_edit_meta_field', 10, 1);

//Product Cat Create page
function wh_taxonomy_add_new_meta_field() {
    ?>   
    <div class="form-field">
        <label for="wh_meta_desc">
		<input type="hidden" name="wh_meta_desc" value="">
		<input name="wh_meta_desc" type="checkbox" id="wh_meta_desc"> Новинка
		</label>
    </div>
    <?php
}



//Product Cat Edit page
function wh_taxonomy_edit_meta_field($term) {
    //getting term ID
    $term_id = $term->term_id;
    // retrieve the existing value(s) for this meta field.
    $wh_meta_desc = get_term_meta($term_id, 'wh_meta_desc', true);
    ?>
    <tr class="form-field">
        <th scope="row" valign="top"><label for="wh_meta_desc">Новинка</label></th>
        <td>
			<label for="wh_meta_desc">
			<input type="hidden" name="wh_meta_desc" value="">
			<input name="wh_meta_desc" type="checkbox" id="wh_meta_desc" <?php if ($wh_meta_desc == 'on'){ echo 'checked'; }; ?>> Новинка
			</label>
        </td>
    </tr>
    <?php
}


// Сохранение данных метаполя
add_action('edited_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);
add_action('create_product_cat', 'wh_save_taxonomy_custom_meta', 10, 1);

// Save extra taxonomy fields callback function.
function wh_save_taxonomy_custom_meta($term_id) {
    $wh_meta_desc = filter_input(INPUT_POST, 'wh_meta_desc');
    update_term_meta($term_id, 'wh_meta_desc', $wh_meta_desc);
}

Далее дорабатываем вывод классов категорий WC

add_filter( 'product_cat_class' , 'add_class_to_category_list_element', 10, 3 );
function add_class_to_category_list_element( $classes, $class, $category ) {
    if( is_object( $category ) )
		$wh_meta_desc = get_term_meta($category->term_id, 'wh_meta_desc', true);
		if ($wh_meta_desc == 'on'){ $classes[] = 'new-cat'; };
	
    return $classes;
}

Стили лэйбла NEW

.new-cat:before {
    content: 'NEW';
    position: absolute;
    font-size: 0.8rem;
    line-height: 19px;
    background: #32cd32;
    color: #fff;
    padding: 3px 15px;
    left: 5px;
    top: 30px;
    box-shadow: 2px 2px 4px rgba(17,17,17,.5);
    border-radius: 0 3px 3px 0;
}

.new-cat:after {
    content: '';
    position: absolute;
    top: 55px;
    left: 5px;
    border: 10px solid transparent;
    border-right: 0;
    border-top-color: #297709;
}

Про добавление классов (в т.ч. NEW) к товарам, описано тут.

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Woocommerce и валюта

Woocommerce и валюта

Разбираем различные решения по работе с валютами (не мультивалютность, это отдельная тема). Курс в другой валюте Если мы торгуем на сайте в рублях, но нам нужно чтобы рядом с каждой Читать далее »

Сообщения woocommerce

Сообщения woocommerce

Сообщения woocommerce — система сопроводительной информации при использовании интернет-магазина. В системе есть 3 типа сообщений: информационные (notice), успешные действия (success), ошибки/предупреждения (error) Стандартные сообщения Это перечень стандартных сообщений разделенных по Читать далее »

Хуки для woocommerce

Хуки для woocommerce

Здесь собраны наиболее востребованные хуки woocommerce, которые могут пригодится при настройке любого интернет-магазина. С другими полезными хуками можно ознакомиться здесь Необходимые части кода вставляем в файл functions (лучше использовать отдельный Читать далее »

/

Добавить комментарий

Пока нет комментариев. Будь первым!

Категория товаров NEW
Различные ошибки и их решения
Рекомендации для васРазличные ошибки и их решенияOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.