如何排除将特定产品 ID 添加到 WooCommerce 中的数组

How to exclude a specific product ID from being added to an array in WooCommerce

我正在尝试 运行 如果语句为真(产品 ID 存在于数组中)的函数,我想从中排除特定的产品 ID。

到目前为止,我有以下代码可以正常工作,但它仍然适用于所有产品,请问我如何排除该产品?

if ( ! is_null( WC()->cart ) ) {
    // Initialize
    $product_ids = array();
    
    // Loop through cart contents
    foreach ( WC()->cart->get_cart_contents() as $cart_item ) {
        if ($cart_item['product_id'] != 32) {
        
            // Get product ID and push to array
            $product_ids[] = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : $cart_item['product_id'];
        }
    }
}

您的代码本身没有任何问题,但您在 if 条件中使用了 $cart_item['product_id'],因此如果它是一个变体 ID,您的条件将不会得到满足。

可以使用 if 条件,但是要将其应用于 1 个或多个产品 ID,您最好使用 NOT (!) in_array()

所以你得到:

if ( ! is_null( WC()->cart ) ) {
    // Initialize
    $product_ids = array();
    
    // Loop through cart contents
    foreach ( WC()->cart->get_cart_contents() as $cart_item ) {
        // Get product ID
        $product_id = $cart_item['variation_id'] > 0 ? $cart_item['variation_id'] : $cart_item['product_id'];
        
        // Exlude Product ID(s), NOT in array 
        if ( ! in_array( $product_id, array( 32, 30, 817 ) ) ) {
            // Push to array
            $product_ids[] = $product_id;
        }
    }
}