Как скрыть продукт в WooCommerce или скрыть продукты по категориям или ролям

Опубликовано: 2020-02-24

Есть много способов скрыть определенный продукт в WooCommerce и в этом посте; мы рассмотрим каждый из этих способов скрыть продукт в WooCommerce. Есть несколько причин, по которым вам следует подумать о том, чтобы скрыть продукт из магазина WooCommerce, но первая в списке — это когда продукта нет в наличии или когда продукт зарезервирован для конкретных клиентов или роли пользователей.

Скрыть продукт WooCommerce

Если вы хотите скрыть товары, которых нет в наличии, вам следует сначала рассмотреть возможность добавления ярлыка «Нет в наличии» на товар, а не скрывать его.

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

Скрыть продукт WooCommerce с помощью параметров

WooCommerce по умолчанию поставляется с отличной опцией, которая позволяет пользователям контролировать видимость продукта.

Вы можете создать скрытый продукт в WooCommerce, контролируя параметр видимости перед публикацией изображения. Чтобы скрыть товар в WooCommerce с помощью видимости, необходимо выполнить следующие шаги:

  1. Войдите в панель управления вашего сайта WordPress.
  2. Нажмите на меню продуктов, как показано на изображении ниже, чтобы получить доступ к продукту, который вы хотите скрыть от пользователей, используя параметр видимости. Как скрыть товар в Woocommerce
  3. Выберите продукт из списка всех продуктов, которые вы хотите скрыть, как показано ниже, и нажмите «Изменить», чтобы открыть экран редактирования продукта: Как скрыть товар в Woocommerce
  4. На экране редактирования продукта с правой стороны под метабоксом публикации ниже есть параметр «Видимость каталога». Нажмите на эту ссылку, и появится раскрывающийся список с параметрами, а последний параметр — «Скрытый».
    Когда вы отметите эту опцию радио и нажмете «ОК», а затем обновите публикацию, продукт будет скрыт из каталога магазина. Как показано в этих трех шагах (1,2,3): Как скрыть товар в Woocommerce
  5. Когда вы сохраните эту опцию и обновите публикацию, видимость продукта будет скрыта, как вы можете видеть в интерфейсе магазина: Как скрыть товар в Woocommerce
  6. Если вы проверите параметр видимости каталога в бэкэнде на экране редактирования продукта, вы должны увидеть, что он был обновлен до скрытого, когда сообщение было обновлено: Как скрыть товар в Woocommerce

Это самый быстрый способ скрыть товар WooCommerce из каталога магазина. Есть и другие способы, например добавление кода в дочернюю тему. Давайте рассмотрим дополнительные параметры, которые вы можете использовать, чтобы скрыть продукт в WooCommerce.

Woocommerce Скрыть продукты определенной категории со страницы магазина

Если вы хотите скрыть определенные продукты со страницы магазина в WooCommerce, вы можете добиться этого с помощью хука действия, который нацелен на запрос страницы магазина «woocommerce_product_query».

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

В этом случае ключ terms в массиве $tax_query эквивалентен категории/тегу, как я объяснял в посте, как получить текущую категорию продукта WooCommerce.

Предположим, мы хотим скрыть этот товар из категории «автозапчасти».

скрыть продукт woocommerce

Мы можем использовать следующий фрагмент кода, добавленный в файл functions.php, чтобы скрыть продукт со страницы магазина:

 /**
 * Скрыть продукт WooCommerce по категориям на странице магазина.
 *
 * @параметр $q
 */
 

add_action('woocommerce_product_query', 'njengah_hide_product_by_category_shop_page'); 

функция njengah_hide_product_by_category_shop_page($q) {

    $tax_query = (массив) $q->get('tax_query');

    $tax_query[] = массив(
           'таксономия' => 'product_cat',
           'поле' => 'слаг',
           'terms' => array('uncategorized','auto-parts'), // Не отображать товары в категории "автозапчасти" на странице магазина.
           'оператор' => 'НЕ ВНУТРИ'
    );


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

}

Добавьте этот код в функции темы, и вы сможете заменить категорию «автозапчасти» любой другой категорией, в которой вы хотите скрыть продукты, и это эффективно скроет продукты из этой категории на странице магазина, как показано ниже:

скрыть продукт woocommerce

WooCommerce Скрыть продукты, если вы не вошли в систему

Другой распространенный способ скрыть продукты в WooCommerce включает ограничение видимости продукта в зависимости от статуса пользователя, независимо от того, зарегистрирован он или нет.

Первым шагом, очевидно, является проверка того, вошел ли пользователь в систему. Здесь я подробно объяснил, как проверить, вошел ли пользователь в WordPress.

Мы собираемся использовать этот код, чтобы проверить статус входа в систему, а затем объединить его с запросом, чтобы условно скрыть продукты WooCommerce в зависимости от статуса пользователя, вошедшего в систему.

Код должен быть следующим:

 **
 * Скрыть продукт WooCommerce, если пользователь не вошел в систему 
 *
 * @параметр $запрос
 */
 

функция njengah_hide_product_if_user_not_logged($query) {
	
	
    если ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) {
		
        $tax_query = массив(
            множество(
                    'таксономия' => 'product_cat',
                    'поле' => 'слаг',
                    'terms' => array('uncategorized','auto-parts'), // Не отображать товары в категории "автозапчасти" на странице магазина.
                    'operator'=> 'НЕ ВХОДИТ' // исключить
                )
            );

        $query->set('tax_query', $tax_query);
    }
}

add_action('pre_get_posts', 'njengah_hide_product_if_user_not_logged');

Как видите, мы условно проверяем, вошел ли пользователь в систему, используя функцию is_user_logged_in(), прежде чем мы сможем продолжить запрос.

Woocommerce Скрыть продукты по ролям пользователей

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

 $user = wp_get_current_user(); // получение и установка текущего пользователя

        $roles = (массив) $user->roles; // получение роли

        $roles[0] //текущая роль пользователя

Мы должны объединить этот код с предыдущим действием pre_get_posts, и код, который будет скрывать продукт для всех пользователей, ожидающих администратора, выглядит следующим образом:

 /**
 * Скрыть продукт WooCommerce по роли пользователя, так как в этом случае только администратор может видеть этот продукт 
 *
 * @параметр $запрос
 */


функция njengah_hide_product_by_user_role ($ запрос) {
	
	 $user = wp_get_current_user(); // получение и установка текущего пользователя 
	 $roles = (массив) $user->roles; // получение роли 
	
	
    if ($query->is_main_query() && is_woocommerce() && $roles[0] != 'администратор') {
		
        $tax_query = массив(
            множество(
                    'таксономия' => 'product_cat',
                    'поле' => 'слаг',
                    'terms' => array('uncategorized','auto-parts'), // Не отображать товары в категории "автозапчасти" на странице магазина.
                    'operator'=> 'НЕ ВХОДИТ' // исключить
                )
            );

        $query->set('tax_query', $tax_query);
    }
}

add_action('pre_get_posts', 'njengah_hide_product_by_user_role');

Как вы можете видеть в этой строке кода, где мы условно проверяем запрос, я ввел условие, чтобы проверить, является ли роль пользователя не администратором — $roles[0] != 'administrator', после чего мы продолжаем выполнение запроса. Вот как вы скрываете продукты WooCommerce в зависимости от роли пользователя.

Вы можете изложить этот пример в соответствии с вашими конкретными потребностями, а также объединить все эти случаи, чтобы создать один условный способ скрытия продуктов WooCommerce.

Последние мысли

В этом посте мы выделили три распространенных способа скрытия продуктов WooCommerce, включая скрытие по роли пользователя, скрытие продуктов, если пользователь не вошел в систему, и скрытие продуктов WooCommerce без любого из этих условий. Мы также описали самый простой способ скрыть продукты WooCommerce, используя параметр видимости каталога, который предоставляется на экране редактирования продукта. Я надеюсь, что теперь вы можете легко реализовать любое из этих решений, чтобы скрыть продукты WooCommerce из своего магазина.