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

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

02.02.2019

22

Если у нас большой интернет-магазин с множеством подкатегорий, и периодически появляются новые, то дополнительное внимание к этому можно привлечь лэйблом 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 (я его назвал product-cat-list.php). Обычно я вывожу этот шаблон на стандартной странице /shop/ Шаблон вывода категорий <div id="subcategory-archive"> <?php $terms = get_terms( array( 'taxonomy' Читать далее »

Заявка на товар

Заявка на товар

Бывает так, что нам не нужно непосредственно продавать товар через сайт, а только лишь получить на него заявку. Данный механизм прост: нам нужно создать форму обратной связи в которую будет Читать далее »

/
Переход на WC 3.0

Переход на WC 3.0

Когда видишь в панели плагинов обновление woocommerce до версии 3.0 — ощущение как будто резко наступил Новый год! Что же нового в версии 3.0: изучаем, тестим, разбираемся. Галерея изображений Теперь Читать далее »

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

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

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