You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据WooCommerce产品库存状态隐藏询价按钮?

解决WooCommerce预售产品仅显示询价按钮的问题

针对你使用Product_Enquiry_For_Woocommerce插件的需求——仅在可预售(backorder)且无库存的产品单品页面显示询价按钮,以下是两种可行方案:

一、PHP钩子控制(推荐,从根源控制按钮输出)

你之前的代码错误在于使用了不相关的钩子,且remove_action的调用方式不正确。正确的做法是先移除插件默认的按钮动作,再根据产品条件重新添加:

// 移除插件默认的询价按钮动作
add_action('init', 'custom_remove_default_enquiry_button');
function custom_remove_default_enquiry_button() {
    // 获取插件实例
    $enquiry_plugin = Product_Enquiry_For_Woocommerce::instance();
    
    // 移除插件绑定的按钮动作(需匹配插件实际使用的钩子和回调方法)
    // 通常插件会用woocommerce_single_product_summary钩子,回调为show_enquiry_button,优先级10
    remove_action('woocommerce_single_product_summary', array($enquiry_plugin, 'show_enquiry_button'), 10);
}

// 按条件重新添加询价按钮
add_action('woocommerce_single_product_summary', 'custom_add_conditional_enquiry_button', 10);
function custom_add_conditional_enquiry_button() {
    global $product;
    
    // 仅当产品可预售且无库存时,显示询价按钮
    if ($product->is_on_backorder() && !$product->is_in_stock()) {
        $enquiry_plugin = Product_Enquiry_For_Woocommerce::instance();
        $enquiry_plugin->show_enquiry_button();
    }
}

注意事项:

  • 如果不确定插件实际使用的钩子和回调方法,可以打开插件的class-product-enquiry-for-woocommerce.php文件,搜索add_action关键字,找到绑定询价按钮的代码行(格式类似add_action('钩子名', array($this, '回调方法名'), 优先级);)
  • 确保代码添加到主题的functions.php文件中

二、CSS条件隐藏(备用方案)

如果PHP钩子方法难以匹配插件的实际动作,可以用CSS根据产品条件隐藏按钮:

add_action('wp_head', 'custom_enquiry_button_conditional_css');
function custom_enquiry_button_conditional_css() {
    global $product;
    
    // 仅在单品页面生效
    if (!is_product()) return;
    
    // 当产品不可预售或有库存时,隐藏询价按钮
    if (!$product->is_on_backorder() || $product->is_in_stock()) {
        echo '<style>.pe-show-enq-modal { display: none !important; }</style>';
    }
}

这个方法通过动态输出CSS,仅在不符合条件的产品页面隐藏按钮,适合快速实现需求。

内容的提问来源于stack exchange,提问作者noliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:35:20