Я использую WooCommerce 3.5.7 и WordPress 5.0.4.
У меня есть несколько продуктов, относящихся к нескольким категориям:
e.g.
Product 1, attached to categories A,B, C
Product 2, attached to categories A,Y, C
etc...
Я хочу скрыть категорию C от сайта, чтобы она не отображалась, когда категории отображаются в меню навигации по категориям сайтов на внешнем интерфейсе.
Я пробовал множество подходов, но ни один из них не работает,
Первый подход:
Скрытие через CSS.
Структура навигационного меню следующая:
<li class="cat-item ">
<span class="icon-toggle"></span>
<a href="https://siteurl.com/product-category/category-url/">category-text</a>
</li>
Я попытался скрыть элемент, используя следующий CSS:
a[href="https://siteurl.com/product-category/category-url/"]
{
display: none!important;
}
Проблема в том, что он удалил гиперссылку и текст, но категория все еще «занимала место» на странице. Это произошло потому, что это скрывает только элемент привязки, а не весь <li class="cat-item ">
, который является родителем этого элемента.
Мне не удалось найти какой-либо способ нацеливания на родительский элемент дочернего элемента в CSS.
Второй подход: Использование pre_get_posts:
https://wordpress.stackexchange.com/questions/90923/pre-get-posts-for-exclude-category
$catid = "-1031";
$excludeCategory = function ($catid)
{
return function ($query)
{
if (
$query->is_home()
&& $query->is_main_query()
) {
$query->set('cat', $catid);
}
};
};
add_action('pre_get_posts', $excludeCategory($catid));
В приведенном выше примере идентификатором категории, которую я хочу скрыть, является '1031
'. Но это не сработало.
Есть предложения, как я могу удалить эту категорию продуктов, чтобы она не отображалась в интерфейсе, но сохранялась в интерфейсе?