Вопрос или проблема
Как отсортировать страницу продуктов WooCommerce так, чтобы сначала отображались новейшие товары на складе, а все товары, которых нет в наличии, были в конце?
В настоящее время я использую фрагмент кода с сайта “https://www.businessbloomer.com/woocommerce-show-in-stock-products-first-shop/”, и он сначала сортирует товары, которые есть в наличии, а все товары, которых нет в наличии, отодвигает на последний план. Но проблема в том, что продукты не упорядочены по новизне. Сначала показываются старые товары на складе.
Существует несколько вариантов.
- Если вы хотите показать товары, которых нет в наличии, но в последних позициях, вы можете объединить ваш фрагмент кода с порядком последних инвентаризаций. Вам не нужно писать код для этого; в кастомизаторе темы обычно можно изменить эту опцию:
- Если вы хотите скрыть товары, которых нет в наличии, и показать товары на складе по новизне, то удалите ваш фрагмент кода, используйте ту же опцию, что и в пункте 1, и добавьте также эту опцию:
Woocommerce -> Продукты -> Инвентаризация -> Скрыть товары, которых нет в наличии.
Это лучший вариант для большинства магазинов, так как он скрывает продукты из списков, но не скрывает страницу продукта, и это не влияет на SEO или требует дополнительных усилий.
Также есть дополнительная конфигурация для скрытия в результатах поиска, как объясняется здесь.
Многие вещи, которые несколько лет назад нужно было делать с помощью кода, WooCommerce теперь предлагает в виде добавленной опции.
Либо вы можете использовать этот бесплатный плагин:
WooCommerce Sort By Stock
С уважением
Ответ или решение
Для того чтобы сортировать страницу товаров WooCommerce так, чтобы в первую очередь отображались новые товары, которые есть в наличии, а все товары, которые отсутствуют на складе, показывались в конце, существует несколько вариантов решения данной задачи. Рассмотрим их более подробно.
1. Изменение настроек темы
Для начала стоит проверить, есть ли возможность сортировки по новизне на странице товаров через настройки вашей темы. В большинстве современных тем WooCommerce вы найдете такой параметр в настройках кастомизации. Обычно это делается следующим образом:
- Зайдите в административную панель WordPress.
- Перейдите в «Внешний вид» -> «Настроить».
- Найдите раздел, связанный с WooCommerce или отображением товаров.
- Проверьте, есть ли опция сортировки товаров по дате (новизне). Убедитесь, что включена сортировка по новизне.
При этом важно отметить, что если эта опция включена, то товары, которые отсутствуют на складе, будут отображаться после доступных, но без учета их дат поступления.
2. Скрытие отсутствующих товаров
Если вам нужно скрыть отсутствующие товары и только показывать новые в наличии, вы можете сделать следующее:
- Перейдите в меню WooCommerce -> Товары -> Запасы (Inventory).
- Найдите опцию «Скрыть товары, которых нет в наличии» и активируйте её.
Этот вариант наиболее предпочтителен для большинства магазинов, так как он не удаляет странице отсутствующие товары, а просто скрывает их из списка, что не сказывается на SEO и не требует дополнительных манипуляций.
3. Использование пользовательского кода
Если предыдущие методы не подходят, вы можете использовать необходимый код, чтобы сортировать товары по дате добавления с учетом наличия. Вот пример кода, который вы можете добавить в файл functions.php
вашей темы:
function custom_sort_products_by_stock_and_date($query) {
if (!is_admin() && $query->is_main_query() && is_shop()) {
$query->set('meta_key', '_stock_status');
$query->set('meta_query', array(
array(
'key' => '_stock_status',
'value' => 'instock', // Сначала показываем в наличии
'compare' => '=='
)
));
$query->set('orderby', array(
'meta_value_num' => 'ASC', // Сначала по состоянию
'date' => 'DESC' // Затем по дате
));
}
}
add_action('pre_get_posts', 'custom_sort_products_by_stock_and_date');
Этот код изменяет запрос к базе данных так, чтобы сначала отображались товары в наличии, отсортированные по дате добавления.
4. Воспользуйтесь плагинами
Если вы предпочитаете использовать плагины, для данной задачи подойдёт WooCommerce Sort By Stock. Этот плагин позволяет легко управлять сортировкой товаров на странице магазина и поддерживает различные параметры сортировки.
Заключение
Сортировка товаров по наличию и свежести является важным аспектом для успешного ведения интернет-магазина на платформе WooCommerce. Используя вышеописанные методы, вы сможете организовать отображение продукции таким образом, чтобы ваши клиенты видели самые новые и доступные товары в первую очередь. Выбор подходящего решения зависит от особенностей вашего бизнеса и предпочтений в управлении контентом.