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
相关产品推荐
相关产品推荐

