add_filter('woocommerce_product_query_tax_query', 'custom_product_query_tax_query', 10, 2 ); function custom_product_query_tax_query( $tax_query, $query ) { if( is_admin() ) return $tax_query; // HERE Define your product category SLUGs to be excluded $terms = array( 'ukategorisert' ); // SLUGs only // Категория в которой нужно скрыть подкатегорию $taxonomy = 'product_cat'; $tax_query[] = array( 'taxonomy' => $taxonomy, 'field' => 'slug', // категорию которую нужно скрыть Or 'name' or 'term_id' 'terms' => $terms, 'operator' => 'NOT IN', // Excluded ); return $tax_query; }
Необходимо скрыть те товарные категории, в которых нет опубликованных товаров. Вернее, вместо них показывать редиректить на 404 страницу.
Трабла в том, что в магазине огромное количество товаров, которые переведены в draft (они физически не удалены, просто скрыты). А так же более тысячи категории. Сеошник говорит, что они каким то образом попадают в индекс и замусоривают сайт. Удалять эти категории и товары владелец не хочет (он иногда те или иные товары публикует).
Как я выяснил – у вордпресса не считается зазорным отображать категории с нулевыми отварами и нет механизма, который их бы скрывал.
Как это реализовать?
1. массово смените видимость всем товарам которые не нужны .. (Личное Видна только администраторам и редакторам.)
2. сделайте импорт ненужных товаров и категорий и удалите их а после держите это в месте где не потеряете. когда нужно будет – восстановите . (не удобный вариант)
3. также средствами htaccess можно сделать редиректы на страницу 404 всех необходимых ссылок ЕСЛИ У ВАС структура ссылок ЧПУ (человеко – понятный – урл . т.е подобной этой site/category/post-name)
если у вас ненужные записи находятся в черновиках – значит ссылка у них должна быть подобной этой ?p=457&preview=true
средствами htaccess сделать редирект на 404 всех записей которые начинаются на ?p= . Посмотрите что индексируется поисковыми системами – но не забывайте что у вас таких ссылок не должно быть из тех которые нужны. также вы не сможете просматривать черновики.