如何为WooCommerce单个产品添加自定义价格且不影响关联产品
调整后可直接使用的代码
add_filter('woocommerce_empty_price_html', 'show_alert_info_if_no_price', 10, 1); function show_alert_info_if_no_price ($product){ // 调用WooCommerce全局循环变量,判断当前是否为关联产品区域 global $woocommerce_loop; // 关联产品区域统一返回短文本,跳过后续逻辑 if (isset($woocommerce_loop['name']) && $woocommerce_loop['name'] == 'related') { return 'Contact us'; } // 仅产品详情页执行后续展示逻辑 if (is_product()) { $price = $product->get_price(); if (empty($price)) { // 详情页无价格时返回长提示 return '<div class="alert-info">Produk ini hanya dapat diproses melakukan pemesanan pembelian (PO). Segera hubungi tim kami. <a href="contactus.php">Kontak kami</a></div>'; } else { return 'Contact us'; } } // 其他场景默认返回短文本,避免空值异常 return 'Contact us'; }
逻辑调整说明
- 优先判断当前循环是否为关联产品区域,符合条件直接返回短文本,完全匹配需求
- 移除了原代码中冗余的
global $product声明,该钩子已直接传入产品对象作为参数,无需重复全局调用 - 删除了原代码中无用的
ob_start()冗余代码,原逻辑未用到输出缓冲相关操作 - 新增了非详情页、非关联产品区域的默认返回值,避免钩子返回空值导致页面展示异常
内容的提问来源于stack exchange,提问作者Deta Zone
相关产品推荐
相关产品推荐

