Избранные товары в 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 более удобным для покупателей и администраторов. Попробуйте интегрировать их и посмотрите, как изменится ваш пользовательский опыт и конверсии!
 
         
                          

 
               
               
               
               
               
               
              