如何修改WooCommerce父分类垂直下拉菜单脚本以隐藏子分类?
只在WooCommerce分类下拉中显示父分类的修改方案
嘿,这个问题我经常碰到!要解决下拉菜单里子分类太多太繁杂的问题,核心就是在获取分类数据的时候,只筛选出顶级父分类(也就是没有上级分类的那些)。我根据常见的两种脚本情况给你具体修改方法:
情况1:你的脚本用get_terms()获取分类
如果现有代码是用WordPress原生的get_terms()函数拉取产品分类,你只需要在参数里加一行'parent' => 0,就能只拿到父分类:
原来的代码大概是这样:
$product_categories = get_terms( 'product_cat', array( 'hide_empty' => true, // 可选:隐藏没有产品的空分类 ) );
修改后:
$product_categories = get_terms( 'product_cat', array( 'hide_empty' => true, 'parent' => 0, // 关键参数:只获取父ID为0的顶级分类 ) );
情况2:你的脚本用WooCommerce专属函数wc_get_product_categories()
如果是用WooCommerce提供的wc_get_product_categories(),同样添加parent参数即可:
原代码示例:
$product_categories = wc_get_product_categories( array( 'hide_empty' => true, ) );
修改后:
$product_categories = wc_get_product_categories( array( 'hide_empty' => true, 'parent' => 0, // 只保留顶级父分类 ) );
额外:修改WooCommerce默认的分类下拉(比如添加产品页面)
如果是想直接修改WooCommerce自带的分类下拉(比如后台添加产品时的分类选择框),不用改现有脚本,直接加个钩子函数就行。把这段代码放到你主题的functions.php文件里,或者自定义插件中:
add_filter( 'woocommerce_product_categories_dropdown_args', 'filter_only_parent_categories_in_woo_dropdown' ); function filter_only_parent_categories_in_woo_dropdown( $args ) { // 强制只显示父分类 $args['parent'] = 0; return $args; }
小提醒
如果你的现有脚本里有递归输出子分类的代码(比如用get_term_children()循环展示子分类的逻辑),记得把那块代码删掉,不然就算只获取了父分类,还是可能会把子分类带出来哦。
内容的提问来源于stack exchange,提问作者Anthony Combs
相关产品推荐
相关产品推荐

