Вам нужно вместо того, чтобы использовать связанную WordPress условную функцию has_term()
с 'product_cat'
систематики аргумент целевой категории продукта таким образом:
add_filter('body_class','custom_body_class');
function custom_body_class($classes) {
if (has_term(802, 'product_cat')) { // assuming that 802 is the id of a product category.
$classes[] = 'class1';
} else if (has_term(array('femme', 'homme', 'enfant'), 'product_cat')) {
$classes[] = 'class2';
}
return $classes;
}
Update 2 (основано на ваш комментарий):
При архивной категории (или подкатегории) pag es пустые, можно использовать функцию get_queried_object()
, чтобы получить текущий объект объекта и адаптировать условия в вашей функции для обработки этих случаев.
Вот этот код:
add_filter('body_class','custom_body_class');
function custom_body_class($classes) {
// Only on product category (or subcategory) archives pages
if(is_product_category()):
// Set HERE your Main category ID (the parent ID of subcategories IDs)
$main_cat = 802;
// Set HERE your subcategories slugs
$sub_cats_arr = array('femme', 'homme', 'enfant');
// Getting the current term (object) of category or subcategory archives page
$term = get_queried_object();
// All the needed data from current term (object)
$term_id = $term->term_id; // term ID
$term_slug = $term->slug; // term slug
$term_name = $term->name; // term name
$term_taxonomy = $term->taxonomy; // Always 'product_cat' for woocommerce product categories
$term_parent_id = $term->parent; // the parent term_id
// FOR YOUR MAIN CATEGORY ID '802' (Handle empty archive page case too)
if (has_term($main_cat, $term_taxonomy) || $term_id == $main_cat)
$classes[] = 'class1';
// FOR YOUR MAIN 3 SUBCATEGORIES SLUGS (Handle empty archive page case too)
if (has_term($sub_cats_arr, $term_taxonomy) || in_array($term_slug, $sub_cats_arr))
$classes[] = 'class2';
endif;
return $classes;
}
Таким образом, вы должны избегать случай при просмотре категории или подкатегории которым не содержат продукт, который не добавляет ваше тело пользовательский класс ...
Я не уверен, что правильно поняли ваш вопрос. Вы хотите добавить класс css на страницу категории и всю ее страницу подкатегории? То есть, у меня есть категория Fruit и подкатегория Apple, Lemon ... и вы хотите, чтобы страница подкатегории с Apple и Lemon имела имя класса css Fruit on the body? – ucheng
да LoicTheAztec дала мне хорошее решение, спасибо в любом случае ucheng! – colapsnux