Как скрыть определенную категорию из WooCommerce Front-end - PullRequest
0 голосов
/ 22 мая 2019

Я использую 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'. Но это не сработало.

Есть предложения, как я могу удалить эту категорию продуктов, чтобы она не отображалась в интерфейсе, но сохранялась в интерфейсе?

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете попробовать добавить onclick="hide()" к ссылке, а затем добавить следующий javascript:

function hide() { document.getElementsByClassName("cat-item ").style.display = "none!important"; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...