Избранные товары в WooCommerce — это отличный инструмент для продвижения ваших самых популярных или прибыльных продуктов. Но, чтобы максимально использовать их потенциал, необходимо правильно настраивать отображение этих товаров как на сайте, так и в админ-панели. В этой статье мы разберем, как настроить WooCommerce так, чтобы избранные товары выделялись на витрине, в категориях и даже в админке.
Зачем выделять избранные товары?
Когда вы отмечаете товар звездочкой в WooCommerce, вы сигнализируете системе, что этот продукт имеет особую важность. Однако стандартные настройки WooCommerce используют избранные товары только в определенных случаях, например, в коротких кодах или виджетах.
Если вы хотите:
- Привлекать внимание клиентов к ключевым продуктам на страницах магазина;
- Увеличивать конверсии за счет визуального выделения лучших предложений;
- Упрощать работу с избранными товарами в админке,
то понадобится доработка функционала.
Как отображать избранные товары первыми на витрине и в категориях?
Следующий PHP-код позволяет размещать избранные товары в начале стандартного списка продуктов (включая страницы магазина, категории, теги и поиск).
/**
* @snippet Вывод избранных товаров первыми в WooCommerce
*/
add_filter( 'posts_orderby', 'custom_featured_products_first', 9999, 2 );
function custom_featured_products_first( $order_by, $query ) {
global $wpdb;
if ( ! is_admin() && $query->is_main_query() && is_woocommerce() ) {
$featured_ids = wc_get_featured_product_ids(); // Получаем ID избранных товаров
if ( ! empty( $featured_ids ) ) {
$order_by = "FIELD(" . $wpdb->posts . ".ID,'" . implode( "','", $featured_ids ) . "') DESC, " . $order_by;
}
}
return $order_by;
}
Как это работает?
- WooCommerce получает список ID избранных товаров.
- Продукты с этими ID помещаются в начало текущего списка товаров.
Условия работы:
- Включается только на страницах магазина, категорий, тегов или результатов поиска.
- Работает с классическим выводом продуктов WooCommerce (не совместимо с блоками).
Настройка сортировки по избранным товарам
Если вы хотите добавить возможность сортировать товары по избранным через выпадающий список сортировки, используйте следующий код:
/**
* @snippet Сортировка по избранным товарам
*/
add_filter( 'woocommerce_catalog_orderby', 'custom_sort_by_featured_option' );
function custom_sort_by_featured_option( $sortby ) {
$sortby['featured'] = __( 'По избранным', 'woocommerce' );
return $sortby;
}
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_sort_by_featured_args' );
function custom_sort_by_featured_args( $args ) {
if ( isset( $_GET['orderby'] ) && 'featured' === $_GET['orderby'] ) {
$args['orderby'] = 'menu_order title';
$args['order'] = 'ASC';
}
return $args;
}
Фильтрация избранных товаров в админке
В стандартной админке WooCommerce нет возможности отфильтровать продукты по их статусу избранности. Добавим новый фильтр:
/**
* @snippet Фильтр по избранным товарам в админке WooCommerce
*/
add_filter( 'woocommerce_products_admin_list_table_filters', 'add_featured_filter' );
function add_featured_filter( $filters ) {
$filters['featured_choice'] = 'filter_by_featured_status';
return $filters;
}
function filter_by_featured_status() {
$current_choice = isset( $_REQUEST['featured_choice'] ) ? wc_clean( wp_unslash( $_REQUEST['featured_choice'] ) ) : false;
echo '<select name="featured_choice">
<option value="">' . __( 'Фильтр по избранным', 'woocommerce' ) . '</option>
<option value="onlyfeatured" ' . selected( $current_choice, 'onlyfeatured', false ) . '>' . __( 'Только избранные', 'woocommerce' ) . '</option>
<option value="notfeatured" ' . selected( $current_choice, 'notfeatured', false ) . '>' . __( 'Неизбранные', 'woocommerce' ) . '</option>
</select>';
}
add_filter( 'parse_query', 'apply_featured_filter' );
function apply_featured_filter( $query ) {
global $typenow;
if ( $typenow === 'product' && isset( $_REQUEST['featured_choice'] ) ) {
if ( $_REQUEST['featured_choice'] === 'onlyfeatured' ) {
$query->query_vars['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'featured',
);
} elseif ( $_REQUEST['featured_choice'] === 'notfeatured' ) {
$query->query_vars['tax_query'][] = array(
'taxonomy' => 'product_visibility',
'field' => 'slug',
'terms' => 'featured',
'operator' => 'NOT IN',
);
}
}
return $query;
}
Теперь в админке появится выпадающий фильтр, позволяющий быстро переключаться между избранными и обычными товарами.
Заключение
Выделение избранных товаров — мощный инструмент для увеличения продаж. С помощью описанных выше методов вы сможете:
- Автоматически помещать избранные товары в начало списков.
- Добавить сортировку по избранным на витрине.
- Упростить работу с избранными товарами в админке.
Эти доработки помогут сделать ваш магазин WooCommerce более удобным для покупателей и администраторов. Попробуйте интегрировать их и посмотрите, как изменится ваш пользовательский опыт и конверсии!