Как поднять наверх товар определенной категории WordPress (Woocommerce)?

Чтобы поднять товар определенной категории вверх на странице категории в WordPress (с использованием плагина WooCommerce), вам потребуется внести некоторые изменения в код вашей темы.

1. Создайте и активируйте дочернюю тему WordPress. Это позволит вам внести изменения в код без изменения основной темы, что обеспечит безопасность и сохранит ваши изменения в случае обновления темы.

2. Откройте файл functions.php вашей активной дочерней темы для редактирования.

3. Добавьте следующий код в файл functions.php:

// Перемещение товаров определенной категории вверх на странице категории WooCommerce
function move_category_products_up() {
    if (is_product_category()) {
        $category = get_queried_object(); // Получаем объект категории
        $category_id = $category->term_id; // Получаем ID категории

        $args = array(
            'post_type' => 'product',
            'posts_per_page' => -1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'term_id',
                    'terms' => $category_id,
                ),
            ),
            'meta_key' => 'menu_order', // Поле для сортировки товаров
            'orderby' => 'meta_value_num', // Сортировка по числовому значению поля
            'order' => 'ASC', // Сортировка по возрастанию
        );

        $products = new WP_Query($args);

        if ($products->have_posts()) {
            $menu_order = 0; // Начальное значение для поля сортировки

            while ($products->have_posts()) {
                $products->the_post();
                $menu_order += 1;

                $product_id = get_the_ID();

                // Обновляем значение поля сортировки товара
                update_post_meta($product_id, 'menu_order', $menu_order);
            }
        }

        wp_reset_postdata();
    }
}

add_action('woocommerce_before_shop_loop', 'move_category_products_up');

4. Сохраните файл functions.php и обновите ваш сайт.

Теперь, когда вы посетите страницу категории WooCommerce, товары определенной категории будут отображаться вверху списка, основанные на их порядке сортировки. В этом коде мы использовали функцию move_category_products_up, которая сначала получает текущую категорию, а затем находит все товары этой категории. Далее она обновляет значение поля сортировки для каждого товара, чтобы переместить их вверх на странице категории.

Обратите внимание, что в этом примере мы используем стандартное поле "menu_order" для сортировки товаров. Если вы используете другое поле, вам необходимо указать его в аргументе 'meta_key' и указать правильный ключ сортировки.