如何为无子的WooCommerce产品分类存档添加Body类?
解决产品分类页面添加无子分类自定义Body类的问题
你的代码主要有三个问题导致无效:
- 没有获取当前产品分类的ID,代码里的
id是未定义变量 - 判断子分类存在的逻辑搞反了,应该检查子分类数组是否为空
- 没限定仅在产品分类页面执行,可能在其他页面误触发
直接用下面的修正代码替换你的原有代码即可:
add_filter( 'body_class', 'add_childless_category_body_class' ); function add_childless_category_body_class( $classes ) { // 仅在产品分类页面执行逻辑 if ( is_product_category() ) { // 获取当前页面的产品分类对象 $current_category = get_queried_object(); // 获取该分类的所有直接子分类,这里hide_empty设为false会显示所有子分类,不管是否有产品 // 如果你只想排除完全空的子分类,把false改成true即可 $child_categories = get_terms( array( 'taxonomy' => 'product_cat', 'parent' => $current_category->term_id, 'hide_empty' => false, ) ); // 没有子分类的话,给body添加childless类 if ( empty( $child_categories ) ) { $classes[] = 'childless'; } } return $classes; }
代码说明:
is_product_category():确保这段代码只在WooCommerce产品分类页面生效,避免干扰其他页面get_queried_object():准确获取当前页面对应的产品分类对象,拿到正确的分类IDget_terms指定product_cat分类法:专门针对产品分类获取子分类,比通用的get_categories更精准empty($child_categories):直接判断是否存在子分类,逻辑更准确
添加完这个代码后,无子分类的产品分类页面的body标签就会带上childless类,你就可以直接用.childless来写对应的CSS样式了。
内容的提问来源于stack exchange,提问作者JapeNZ
相关产品推荐
相关产品推荐

