美好的一天,
我需要隐藏 WooCommerce 中的添加到艺术按钮,而不影响定价或下拉菜单和变化。我正在使用 WPForms 添加到购物车并结帐,只是不想在网站上的任何位置显示“添加到购物车”按钮。
到目前为止,我已经使用此代码片段从商店和产品页面中删除了“添加到购物车”:
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
这一直有效,直到我添加一个可变产品,它隐藏了“添加到购物车”按钮,但也隐藏了变体下拉列表,所以我使用了这个片段:
remove_action('woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
这会隐藏“添加到购物车”按钮并显示变体下拉列表。
问题是,两个片段不能一起工作,它们基本上互相覆盖。
有一个片段可以帮助我吗?
如何隐藏它重要吗?如果没有,你可以使用CSS
a.add_to_cart_button.ajax_add_to_cart{
display:none;
}
要在所有变体缺货时隐藏可变产品的“添加到购物车”按钮,请在主题的functions.php文件或自定义插件中使用此简化的PHP代码。
这是一个可行的解决方案:
隐藏缺货变化的“添加到购物车”按钮的 PHP 代码
add_action('woocommerce_single_product_summary', 'hide_add_to_cart_for_out_of_stock_variations', 15);
function hide_add_to_cart_for_out_of_stock_variations() {
global $product;
if ($product->is_type('variable')) {
$variations = $product->get_available_variations();
$all_out_of_stock = true;
// Loop through variations and check if any are in stock
foreach ($variations as $variation) {
if ($variation['is_in_stock']) {
$all_out_of_stock = false;
break;
}
}
if ($all_out_of_stock) {
echo '<style>.single_add_to_cart_button { display: none !important; }</style>';
}
}
}
如何运作:
Hook: woocommerce_single_product_summary 在产品页面上运行。 检查是否为可变产品:确认产品类型为可变产品。
检查变体: 循环遍历所有可用变体并检查是否有库存。
隐藏按钮:如果所有变体都缺货,请添加CSS以隐藏“添加到购物车”按钮。
备注: add_action 中的优先级 15 确保该函数在 WooCommerce 呈现产品详细信息后运行。
CSS 规则仅在所有变体都缺货时隐藏按钮。 当没有可供购买的变体时,此代码应有效隐藏“添加到购物车”按钮。