Как скрыть продукт в WooCommerce или скрыть продукты по категориям или ролям
Опубликовано: 2020-02-24Есть много способов скрыть определенный продукт в WooCommerce и в этом посте; мы рассмотрим каждый из этих способов скрыть продукт в WooCommerce. Есть несколько причин, по которым вам следует подумать о том, чтобы скрыть продукт из магазина WooCommerce, но первая в списке — это когда продукта нет в наличии или когда продукт зарезервирован для конкретных клиентов или роли пользователей.
Скрыть продукт WooCommerce
Если вы хотите скрыть товары, которых нет в наличии, вам следует сначала рассмотреть возможность добавления ярлыка «Нет в наличии» на товар, а не скрывать его.
Тем не менее, если вы все еще хотите скрыть продукты, которых нет в наличии, или любые другие продукты WooCommerce, в этом посте я расскажу, как вы можете скрыть продукты по идентификатору, имени или категории.
Скрыть продукт WooCommerce с помощью параметров
WooCommerce по умолчанию поставляется с отличной опцией, которая позволяет пользователям контролировать видимость продукта.
Вы можете создать скрытый продукт в WooCommerce, контролируя параметр видимости перед публикацией изображения. Чтобы скрыть товар в WooCommerce с помощью видимости, необходимо выполнить следующие шаги:
- Войдите в панель управления вашего сайта WordPress.
- Нажмите на меню продуктов, как показано на изображении ниже, чтобы получить доступ к продукту, который вы хотите скрыть от пользователей, используя параметр видимости.
- Выберите продукт из списка всех продуктов, которые вы хотите скрыть, как показано ниже, и нажмите «Изменить», чтобы открыть экран редактирования продукта:
- На экране редактирования продукта с правой стороны под метабоксом публикации ниже есть параметр «Видимость каталога». Нажмите на эту ссылку, и появится раскрывающийся список с параметрами, а последний параметр — «Скрытый».
Когда вы отметите эту опцию радио и нажмете «ОК», а затем обновите публикацию, продукт будет скрыт из каталога магазина. Как показано в этих трех шагах (1,2,3): - Когда вы сохраните эту опцию и обновите публикацию, видимость продукта будет скрыта, как вы можете видеть в интерфейсе магазина:
- Если вы проверите параметр видимости каталога в бэкэнде на экране редактирования продукта, вы должны увидеть, что он был обновлен до скрытого, когда сообщение было обновлено:
Это самый быстрый способ скрыть товар WooCommerce из каталога магазина. Есть и другие способы, например добавление кода в дочернюю тему. Давайте рассмотрим дополнительные параметры, которые вы можете использовать, чтобы скрыть продукт в WooCommerce.
Woocommerce Скрыть продукты определенной категории со страницы магазина
Если вы хотите скрыть определенные продукты со страницы магазина в WooCommerce, вы можете добиться этого с помощью хука действия, который нацелен на запрос страницы магазина «woocommerce_product_query».
Функция обратного вызова должна использовать $tax_query, чтобы сузить круг терминов, связанных с продуктом, который вы хотите скрыть.
В этом случае ключ terms в массиве $tax_query эквивалентен категории/тегу, как я объяснял в посте, как получить текущую категорию продукта 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 включает ограничение видимости продукта в зависимости от статуса пользователя, независимо от того, зарегистрирован он или нет.
Первым шагом, очевидно, является проверка того, вошел ли пользователь в систему. Здесь я подробно объяснил, как проверить, вошел ли пользователь в 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 из своего магазина.