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

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

HIT

02.02.2019

1781

Если у нас большой интернет-магазин с множеством подкатегорий, и периодически появляются новые, то дополнительное внимание к этому можно привлечь лэйблом 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) к товарам, описано тут.

[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Предоплата товара

Предоплата товара

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

Модификация Woocommerce

Модификация Woocommerce

Продолжаем серию модификаций модуля интернет коммерции Woocommerce. Скрыть колонки редактирования товаров add_filter( 'manage_edit-product_columns', 'change_columns_filter',10, 1 ); function change_columns_filter( $columns ) { unset($columns['product_tag']); unset($columns['sku']); unset($columns['featured']); return $columns; } Тоже самое можно Читать далее »

/ /
Новинка (товар NEW полем)

Новинка (товар NEW полем)

Ранее были рассмотрены варианты добавления лэйбла New полуавтоматическим способом (последние созданные товары, либо по времени от текущего), либо назначением метки NEW. Здесь разберем как сделать данный функционал полем и какие Читать далее »

/

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

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

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