在woocommerce中禁用一种产品的购买
Posted
技术标签:
【中文标题】在woocommerce中禁用一种产品的购买【英文标题】:Disabling the purchase for one product in woocommerce 【发布时间】:2019-04-23 12:53:37 【问题描述】:我正在尝试关闭购买选定产品的可能性,但到目前为止我发现的所有材料都不适用于我。我想排除特定产品,最好是通过移除按钮,因为我希望该产品像其他产品一样工作,但没有购买的可能性。
这段代码对我来说是完美的:
add_filter('woocommerce_is_purchasable', 'filter_is_purchasable');
function filter_is_purchasable( $is_purchasable, $product )
return ( $product->id == 534 ? false : $is_purchasable );
不幸的是,它不起作用。有什么想法吗?
【问题讨论】:
如果您不尝试将其应用于 VARIABLE 产品,您的代码应该可以使用 @Loic。您是在简单产品还是可变产品上尝试?如果它是一个变量产品,那么看看我的答案。 【参考方案1】:自 Woocommerce 3 以来,此代码有点过时,因为 $product->id
需要替换为 $product->get_id()
... 请尝试以下操作 (其中 534 是相关产品 ID,其中不会出现添加到购物车按钮):
add_filter('woocommerce_is_purchasable', 'purchasable_product_customizations', 10, 2 );
function purchasable_product_customizations( $is_purchasable, $product )
if( in_array( $product->get_id() == 534 )
$is_purchasable = false;
return $is_purchasable;
代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。
如果您的产品 ID 是可变产品
对于要禁用所有变体的可变产品 ID,您将替换此行:
if( in_array( $product->get_id() == 534 )
这个:
if( in_array( $product->get_parent_id() == 534 )
如果它仍然不起作用,是因为其他东西正在交互并造成麻烦,例如您进行的一些自定义、您的主题或插件……也可能是因为您没有在正确的位置添加此代码。
【讨论】:
所有修改都为functions.php添加了一个子主题,不幸的是在这种情况下它收到了HTTP ERROR 500,页面停止工作。if
s 后面缺少右括号【参考方案2】:
代码应该不同取决于产品类型(可变与否)。 下面看看我对这两种类型都使用了什么:
add_filter('woocommerce_is_purchasable', 'change_products_purchaseable_state', 23, 2 );
add_filter('woocommerce_variation_is_purchasable', 'change_products_purchaseable_state', 23, 2 );
function change_products_purchaseable_state( $is_purchasable, $product )
$product_id = $product->get_id();
// For product variations (from variable products)
if ( $product->is_type('variation') )
$parent = wc_get_product( $product->get_parent_id() );
$product_id = $parent->get_id();
// Check if the Product belongs to a specific Category
if( has_term( 51, 'product_cat', $product_id ) )
return false;
return $is_purchasable;
此代码应适用于所有地方:单一产品页面、商店页面以及您使用 WooCommerce 模板或简码的其他地方。
【讨论】:
以上是关于在woocommerce中禁用一种产品的购买的主要内容,如果未能解决你的问题,请参考以下文章
php [WooCommerce Core]每行更改产品数量(Woo主题)
php [WooCommerce Core]每行更改产品数量(Woo主题)
php [WooCommerce Core]每行更改产品数量(Woo主题)
php [woo总是显示所有图像变化]在“yith-color-and-label-variations-for-woocommerce”插件#wordpress中选择产品变体时