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

WooCommerce+Astra主题:实现无论价格状态均显示Add to cart按钮

解决Astra主题WooCommerce商店模块无价格时不显示“Add to cart”按钮的问题

方法1:通过过滤器强制开启产品可购买状态

WooCommerce默认会隐藏无价格产品的添加到购物车按钮,因为这类产品被标记为不可购买。可以添加以下代码到子主题的functions.php文件,或者使用代码片段插件:

// 强制所有产品(包括无价格)可购买
add_filter( 'woocommerce_is_purchasable', 'force_purchasable_for_all_products', 10, 2 );
function force_purchasable_for_all_products( $purchasable, $product ) {
    return true;
}

// 可变产品同样强制可购买
add_filter( 'woocommerce_variation_is_purchasable', 'force_variation_purchasable', 10, 2 );
function force_variation_purchasable( $purchasable, $variation ) {
    return true;
}

这段代码会忽略产品的价格状态,强制标记所有产品为可购买,Astra的商店模块就会自动显示“Add to cart”按钮。

方法2:修改Astra的产品循环模板(适合有开发基础的用户)

如果方法1无效,可能是Astra主题在模板中做了额外的条件判断。你可以通过子主题重写模板来绕过这个限制:

  • 在子主题文件夹中创建woocommerce/content-product.php文件
  • 复制Astra主题原文件woocommerce/content-product.php的内容到新文件中
  • 找到类似这样的条件判断代码块:
    if ( $product->is_purchasable() && $product->is_in_stock() ) {
        // 输出添加到购物车按钮的代码
    }
    
  • 移除外层的条件包裹,直接保留输出“Add to cart”按钮的代码(比如直接保留do_action( 'woocommerce_after_shop_loop_item' );这一行)

方法3:隐藏价格字段但保留按钮(可选)

如果只是需要隐藏价格但保留按钮,可额外添加以下代码:

// 隐藏商店页面的产品价格
add_action( 'woocommerce_before_shop_loop_item_title', 'hide_shop_loop_product_price', 11 );
function hide_shop_loop_product_price() {
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
}

注意:添加代码前请备份网站,使用代码片段插件(如Code Snippets)可以更安全地修改,避免直接编辑主题文件引发问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:03:22