【问题标题】:Disable add to cart button for an array of products IDs in WooCommerce禁用 WooCommerce 中一系列产品 ID 的添加到购物车按钮
【发布时间】:2016-09-26 11:19:09
【问题描述】:

在 WooCommerce 中,我试图为一系列产品 ID 禁用“添加到购物车”按钮,但我找不到问题所在。

我正在尝试使用此功能:

add_filter('woocommerce_is_purchasable', 'my_woocommerce_is_purchasable', 10, 2);

function my_woocommerce_is_purchasable($is_purchasable, $product) {
    $id=check(); // This function return an array of IDs
    foreach ($id as $id_p){
        return ($product->id = $id_p ? false : $is_purchasable);
    }
}

这是我的check()功能代码(更新)

function check() { 
    $listproduit = get_woocommerce_product_list();
    $score = get_score_user(); 
    foreach ($listproduit as $products) { 
        if ($products[1] >= 5000) { 
            $listid = $products[0]; 
            return $listid; 
            // print_r($listid); 
        } 
    } 
    return $listid; 
}

但这不起作用。

我做错了什么?

谢谢

【问题讨论】:

  • 带有内联 returnforeach ... 恕我直言没有意义。它将比较check()function 返回的第一个条目,如果$id_p 不为false,则返回false,否则返回$is_purchasable 的值。你打算这样做吗?
  • 我想将值为 $is_purchasable=false 的 woocommerce_is_purchasable 应用于 check 函数返回的产品 ID 数组,谢谢您的帮助 ----> 我想阻止底部将这些产品 ID 添加到购物车

标签: php wordpress woocommerce cart product


【解决方案1】:

我为此苦苦挣扎,但最终找到了答案。希望对您有所帮助:

add_action('woocommerce_single_product_summary', 
'wp66176371_remove_product_description_add_cart_button', 1 );
function wp66176371_remove_product_description_add_cart_button() {
global $product;
if(in_array($product->get_id(), array(414, 427))){
remove_action( 'woocommerce_single_product_summary', 
'woocommerce_template_single_add_to_cart', 30 );
}
} 

【讨论】:

    【解决方案2】:

    为 WooCommerce 3+ 更新

    使用in_array() 代替:

    add_filter( 'woocommerce_variation_is_purchasable', 'filter_is_purchasable', 10, 2 );
    add_filter('woocommerce_is_purchasable', 'filter_is_purchasable', 10, 2);
    function filter_is_purchasable($is_purchasable, $product ) {
        if( in_array( $product->get_id(), not_purchasable_ids() ) {
             return false;
        } 
        return is_purchasable;
    }
    

    其中not_purchasable_ids() 是返回不可购买产品ID 数组的函数(此处为简化)

    function not_purchasable_ids() {
         return array( 37, 53, 128, 129 );
    }
    

    此代码位于您的活动子主题(或活动主题)的 functions.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 函数检查() { $listproduit=get_woocommerce_product_list(); $score=get_score_user(); foreach ($listproduit as $products) { if ($products[1]>=5000) { $listid=$products[0];返回 $listid; print_r($listid); } } 返回 $listid; }
    • 这就是我需要的一些产品我该怎么做
    猜你喜欢
    • 2018-09-30
    • 2021-01-31
    • 1970-01-01
    • 2014-01-01
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多