如何修改WooCommerce代码以针对特定商品类别隐藏未登录用户的商品价格并限制购买
如何修改WooCommerce代码以针对特定商品类别隐藏未登录用户的商品价格并限制购买
没问题,我来帮你调整这段代码,让它只针对你指定的商品类别生效。核心思路是在原有「判断用户是否登录」的逻辑基础上,新增一个检查:当前商品是否属于你设定的目标类别,只有同时满足「用户未登录」和「商品属于目标类别」两个条件时,才执行隐藏价格、限制购买的操作。
修改后的完整代码
// 针对特定类别,给未登录用户隐藏商品价格 add_action('after_setup_theme','magik_activate_filter') ; function magik_activate_filter() { add_filter('woocommerce_get_price_html', 'magik_show_price_logged'); } function magik_show_price_logged($price) { // 定义你要针对的商品类别(用类别slug,多个类别就往数组里加) $target_categories = array('electronics', 'furniture'); // 获取当前商品对象,防止无商品场景报错 global $product; if ( ! $product ) { return $price; } // 逻辑判断:已登录 或 商品不在目标类别 → 返回原价格 if( is_user_logged_in() || ! has_term( $target_categories, 'product_cat', $product->get_id() ) ) { return $price; } else { // 未登录且商品在目标类别 → 隐藏价格,显示登录链接 remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 ); remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); return '<a href="' . get_permalink(woocommerce_get_page_id('myaccount')) . '">Login to order</a>'; } } // Option Two:限制特定类别商品对未登录用户的购买权限(不需要的话可以删掉这部分) add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2); function my_woocommerce_is_purchasable($is_purchasable, $product) { // 和上面保持一致的目标类别定义 $target_categories = array('electronics', 'furniture'); // 逻辑判断:已登录 或 商品不在目标类别 → 允许购买 if( is_user_logged_in() || ! has_term( $target_categories, 'product_cat', $product->get_id() ) ) { return true; } // 未登录且商品在目标类别 → 禁止购买 return false; }
关键修改说明
- 自定义目标类别:你需要把代码里
$target_categories数组中的'electronics'、'furniture'换成你实际需要的商品类别slug(可以在WordPress后台「商品 → 商品类别」里查看每个类别的slug),多个类别直接在数组里追加即可。 - 商品类别检查:用
has_term()函数判断当前商品是否属于目标类别,这个函数的参数分别是「类别/类别数组」、「WooCommerce商品类别的分类法名称product_cat」、「商品ID」。 - 逻辑优化:把原来「只要未登录就隐藏价格」的逻辑,改成「未登录且商品在目标类别中才执行隐藏/限制」,这样其他类别的商品对未登录用户依然正常显示价格和购买权限。
注意事项
- 如果你只需要隐藏价格不需要限制购买,直接删掉Option Two的代码即可;反之同理。
- 建议把代码添加到主题的
functions.php文件末尾,或者用自定义代码插件(比如Code Snippets)来管理,避免主题更新导致代码丢失。
备注:内容来源于stack exchange,提问作者Farrukh Nasir
相关产品推荐
相关产品推荐

