在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,页面停止工作。 ifs 后面缺少右括号【参考方案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中选择产品变体时

Woo commerce 和 PayPal “很抱歉,我们无法使用您选择的资金来源完成您的购买”

在 WooCommerce 中添加到购物车之前清空购物车