Как скрыть товары с надписью ‘нет в наличии’ на странице ‘товары’ в админке?

Вопрос или проблема

У меня есть большое количество товаров, которых нет в наличии. У них статус “нет в наличии” и количество 0.

Я хотел бы скрыть их с администраторской страницы “товары”.

Они не отображаются в магазине. Это работает правильно. Я хочу, чтобы они были скрыты с администраторских страниц.

Как я могу это сделать?

Я готов написать небольшой фрагмент кода для этого. Какая функция используется для генерации списка на странице товара?

Спасибо, Джордж

Вы можете сделать это, добавив код ниже в файл функций вашей темы.

add_action( 'pre_get_posts', 'iconic_hide_out_of_stock_products' );

function iconic_hide_out_of_stock_products( $q ) {

if ( ! $q->is_main_query() || is_admin() ) {
    return;
}

if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {

    $tax_query = (array) $q->get('tax_query');

    $tax_query[] = array(
        'taxonomy' => 'product_visibility',
        'field' => 'term_taxonomy_id',
        'terms' => array( $outofstock_term->term_taxonomy_id ),
        'operator' => 'NOT IN'
    );

    $q->set( 'tax_query', $tax_query );

}

remove_action( 'pre_get_posts', 'iconic_hide_out_of_stock_products' );

}

Этот код был протестирован на фронтенде, но его можно легко адаптировать для бэкенда.

Дополнительную информацию можно найти по этой ссылке https://iconicwp.com/hide-stock-products-woocommerce-catalog-pages/

Ответ или решение

Чтобы скрыть товары, которые отсутствуют на складе, на странице «Товары» административной панели в WooCommerce, можно воспользоваться хуком pre_get_posts. Вы можете добавить следующий код в файл functions.php вашей темы. Этот код позволит исключить товары со статусом «нет в наличии» из выборки товаров в панели администратора, сохраняя при этом их доступность на фронтенде вашего магазина.

Шаги для реализации:

  1. Откройте файл functions.php вашей темы.
    Этот файл находится в директории вашей активной темы. Вы можете получить к нему доступ через FTP-клиент или через редактор тем в админке WordPress.

  2. Добавьте следующий код:

add_action('pre_get_posts', 'iconic_hide_out_of_stock_products');

function iconic_hide_out_of_stock_products($q) {
    // Убедитесь, что запрос является основным и выполняется в админке
    if (!$q->is_main_query() || !is_admin()) {
        return;
    }

    // Получаем термин для отсутствующих товаров
    if ($outofstock_term = get_term_by('name', 'outofstock', 'product_visibility')) {
        // Получаем текущее состояние tax_query
        $tax_query = (array) $q->get('tax_query');

        // Добавляем условие, чтобы исключить товары со статусом 'outofstock'
        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field' => 'term_taxonomy_id',
            'terms' => array($outofstock_term->term_taxonomy_id),
            'operator' => 'NOT IN'
        );

        // Устанавливаем обновленный tax_query обратно в запрос
        $q->set('tax_query', $tax_query);
    }

    // Удаляем действие, чтобы предотвратить рекурсивный вызов
    remove_action('pre_get_posts', 'iconic_hide_out_of_stock_products');
}

Объяснение работы кода:

  • Хук pre_get_posts: Этот хук позволяет вам изменять основную выборку продуктов перед их отображением в админки.

  • Проверка основного запроса: Убедимся, что изменяем именно основной запрос в административной части (функция is_admin() позволяет проверить, находимся ли мы в админ панели).

  • Получение термина товара ‘outofstock’: Функция get_term_by ищет термин с именем ‘outofstock’ в таксономии product_visibility.

  • Модификация tax_query: Мы добавляем новое условие, которое исключает товары, которые находятся в состоянии ‘outofstock’, используя оператор ‘NOT IN’.

  • Удаление действия: Это необходимо, чтобы избежать бесконечной рекурсии.

Заключение

Этот код позволит вам эффективно скрыть товары, которые отсутствуют на складе, на странице администратора вашего WooCommerce, тем самым улучшая управление продуктами. Если вам необходимо больше информации о работе с хуками в WordPress, вы можете ознакомиться с официальной документацией.

Убедитесь, что вы сделали резервную копию вашего сайта перед редактированием файлов, и протестируйте изменения в безопасной среде, чтобы избежать потенциальных проблем.

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

Капча загружается...