WooCommerce特定商品单页隐藏库存信息代码失效问题咨询
代码存在的问题
- 过滤器参数配置错误:
woocommerce_stock_html过滤器默认提供3个参数$html, $availability, $product,你在add_filter时仅设置了接收2个参数,导致函数无法获取到正确的$product和$availability变量值。 - 函数参数名错误:你定义的回调函数第二个参数写为
$text,实际应该是库存状态数组$availability,导致后续对$availability的判断完全失效。 - 隐藏逻辑不完整:当前仅判断了「有货」状态的隐藏,勾选选项后缺货、低库存等其他库存状态仍然会展示,不符合全隐藏库存信息的需求。
- 括号匹配&返回逻辑瑕疵:原函数的大括号闭合逻辑存在问题,未勾选隐藏选项时没有明确的默认返回$html的逻辑,部分场景可能返回空值。
修正后的完整代码
// 商品库存选项卡添加隐藏库存复选框 function action_woocommerce_hide_product_stock_info() { woocommerce_wp_checkbox( array( 'id' => '_hide_stock_status', 'label' => __( 'Hide product stock info', 'woocommerce' ), 'desc_tip' => false, 'description' => __( 'Dont show product stock info on product page', 'woocommerce' ) ) ); } add_action( 'woocommerce_product_options_inventory_product_data', 'action_woocommerce_hide_product_stock_info', 10, 0 ); // 保存复选框配置 function action_woocommerce_hide_product_stock_info_object( $product ) { $checkbox = isset( $_POST['_hide_stock_status'] ) ? 'yes' : 'no'; $product->update_meta_data( '_hide_stock_status', $checkbox ); } add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_hide_product_stock_info_object', 10, 1 ); // 商品详情页隐藏对应库存信息 function filter_woocommerce_hide_product_stock( $html, $availability, $product ) { $hide_stock = $product->get_meta( '_hide_stock_status' ); // 勾选隐藏则直接返回空字符串,所有库存状态都不展示 if ( $hide_stock === 'yes' ) { return ''; } // 未勾选返回原库存HTML return $html; } add_filter( 'woocommerce_stock_html', 'filter_woocommerce_hide_product_stock', 10, 3 );
内容的提问来源于stack exchange,提问作者Nik7
相关产品推荐
相关产品推荐

