Скрыть товары без категории на странице магазина

24 апр. 2018 г., 18:01:05
Просмотры: 20.8K
Голосов: 4

Когда WooCommerce обновился до версии 3.3, была добавлена категория товаров "Без категории", которая стала отображаться на всех страницах (включая страницу магазина WooCommerce), где отображаются товары. Все товары, которым не назначена хотя бы одна категория, автоматически попадают в категорию "Без категории".

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

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

Смотрите https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/

Однако ни одно из этих решений не является "чистым" или достаточно надежным.

Мой временный вариант заключался в том, чтобы показывать только те товары, которые я хочу видеть, используя шорткод категорий товаров (без ID категории "Без категории"). Например:

[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]

но это не решает проблему на странице магазина (которая не использует шорткоды).

Интересно, есть ли у кого-нибудь надежный метод скрытия категории товаров "Без категории", так как эта проблема актуальна и в настоящее время широко распространена.

0
Все ответы на вопрос 2
1
11

Я решил эту проблему на основе кода, любезно предоставленного rynoldos (https://gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994), следующим образом:

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

/** Удаление категорий из магазина и других страниц
 * в WooCommerce
 */
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
                $new_terms[] = $term;
              }
        }
        $terms = $new_terms;
    }
    return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );

Этот код применяется к странице магазина в WooCommerce. Если вы хотите применить его к другой странице, замените is_shop() на is_page('SLUG_ВАШЕЙ_СТРАНИЦЫ').

Я также долго искал решение этой проблемы, но приведённый выше код отлично работает в моём случае.

24 апр. 2018 г. 18:21:41
Комментарии

Примечание для читателей не из США: слаг локализован, поэтому, например, в Великобритании он пишется с буквой 's', а не 'z'. Сложно заметить баг, когда кажется, что он просто не работает.

izb izb
8 апр. 2020 г. 11:24:11
2

Я нашла простой способ скрыть категорию "Без рубрики" на странице магазина: я изменила её родительскую категорию с "Нет" на другую существующую категорию.

Надеюсь, это поможет :-)

Марианна

14 мая 2018 г. 19:33:40
Комментарии

Можете пояснить... как вы это сделали?

Prajwol Onta Prajwol Onta
8 авг. 2019 г. 05:08:13

Здесь нет "родительской категории" - этот ответ не имеет смысла.

wickywills wickywills
6 апр. 2022 г. 17:03:30