Woocommerce: скрыть или удалить раздел Uncategorized/Misc
В Woocommerce, после установки, есть только один раздел – Uncategorized или Misc. Это раздел по умолчанию. После того, как вы заведёте дополнительные разделы, он всё-равно останется. В этот раздел будут попадать те товары, которым не присвоен другой раздел. Но этот раздел отображается в каталоге товаров, что выглядит неправильно. Как его убрать?
Есть 2 способа:
- Сделать другой раздел разделом по умолчанию;
- Скрыть этот раздел из фронтенда.
1 способ
Хотя я не рекомендую удалять этот раздел, всё же опишу его здесь, хотя, по хорошему, он должен остаться и собирать товары, у которых нет категории.
Как поменять категорию по умолчанию?
Перейдите в Консоль WordPress > Записи > Категории, выберите раздел, который хотите сделать разделом по умолчанию. И нажмите “Сделать по умолчанию”.
После этого раздел Uncategorized/Misc можно будет удалить.
2 способ
Вы можете скрыть этот раздел со страниц сайта с помощью фильтров в файле functions.php вашей темы. Этот способ наиболее предпочтителен, поскольку раздел Uncategorized/Misc продолжит выполнять свою функцию – собирать товары, у которых нет категории. Это особенно актуально для тех, кто проводит интеграцию с 1С и структура разделов в 1С и на сайте отличается или в 1С не ведут контент-менеджмент и новые товары нужно предварительно подготовить перед тем, как публиковать. Конечно, структуру сайта и 1С можно дифференцировать и с помощью 1С, но иногда так проще, если товаров немного.
Приведённый ниже код скрывает раздел Uncategorized/Misc из виджета в сайдбаре:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//* Используется, если виджет отображается в виде выпадающего списка add_filter( 'woocommerce_product_categories_widget_dropdown_args', 'ks_exclude_wc_widget_categories' ); //* Используется, если виджет отображается в виде списка add_filter( 'woocommerce_product_categories_widget_args', 'ks_exclude_wc_widget_categories' ); function ks_exclude_wc_widget_categories( $cat_args ) { $term = get_term_by('slug', 'uncategorized', 'product_cat'); if ($term) { $cat_args['exclude'] = array( $term -> term_id); // раздел для исключения if (isset($cat_args['include'])) { $includes = wp_parse_id_list($cat_args['include']); $key = array_search($term->term_id, $includes); if ( isset($includes[$key]) ) { unset( $includes[$key] ); // исключить раздел из списка разрешённых к отображению } $cat_args['include'] = implode(', ', $includes); } return $cat_args; } } |
Этот код скроет категорию Uncategorized/Misc со страниц магазина:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Скрыть раздел Uncategorized/Misc со страниц магазина add_filter( 'get_terms', 'ks_get_subcategory_terms', 10, 3 ); function ks_get_subcategory_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; } |
Всё, после выполнения данных действий раздел Uncategorized/Misc больше не будет отображаться на сайте. Проверено на сторонней теме, этот раздел также пропадает из ajax поиска, если в нём есть возможность выбора разделов для поиска.
В стандартной теме Woocommerce Storefront, да и во многих других, если вы включили отображение категорий/разделов в каталоге вместе с товарами,…
В некоторых ситуациях интернет магазины торгуют не только с физическими лицами, но и с юридическими. В других CMS, например в…