嗨这里提供的解决方案WooCommerce - 检查项目是否已经在购物车中完美运行。 这是功能代码:

function woo_in_cart($arr_product_id) {
    global $woocommerce;
    $cartarray=array();

    foreach($woocommerce->cart->get_cart() as $key => $val ) {
       $_product = $val['product_id'];
       array_push($cartarray,$_product);
    }

    if (!empty($cartarray)) {
       $result = array_intersect($cartarray,$arr_product_id);
    }

    if (!empty($result)) {
       return true;
    } else {
       return false;
    };

}

用法

  $my_products_ids_array = array(22,23,465);
if (woo_in_cart($my_products_ids_array)) {
  echo 'ohh yeah there some of that products in!';
}else {
  echo 'no matching products :(';
}

但我需要使用,好像(in_array)但到目前为止没有运气。 我做错了什么?

$my_products_ids_array = array("69286", "69287",);
if (in_array("69286", $my_products_ids_array)) {
    echo '<p>' . the_field ( 'cart_field', 'option' ) . '</p>';
}
if (in_array("69287", $my_products_ids_array)) {
    echo '<p>' . the_field ( 'cart_field-1', 'option' ) . '</p>';
}

谢谢

#1楼 票数:3 已采纳

您的主要功能代码已过时。

对于高级自定义字段(ACF):

  • 你需要使用get_field() 返回字段值)而不是the_field() 显字段值)
  • 您可能需要在get_field('the_slug', $product_id )添加产品ID作为第二个参数。

所以尝试:

function is_in_cart( $ids ) {
    // Initialise
    $found = false;

    // Loop Through cart items
    foreach( WC()->cart->get_cart() as $cart_item ) {
        // For an array of product IDS
        if( is_array($ids) && ( in_array( $cart_item['product_id'], $ids ) || in_array( $cart_item['variation_id'], $ids ) ) ){
            $found = true;
            break;
        }
        // For a unique product ID (integer or string value)
        elseif( ! is_array($ids) && ( $ids == $cart_item['product_id'] || $ids == $cart_item['variation_id'] ) ){
            $found = true;
            break;
        }
    }

    return $found;
}

代码位于活动子主题(或活动主题)的function.php文件中。 经过测试和工作。

自定义条件函数is_in_cart( $ids )接受字符串(唯一产品ID)或产品ID数组。


您重新访问的用法 (ACF get_field可能需要帖子ID(产品ID)):

if ( is_in_cart( "69286" ) ) {
    echo '<p>' . get_field ( 'cart_field' ) . '</p>'; // or get_field ( 'cart_field', "69286" )
}
if ( is_in_cart( "69287" ) ) {
    echo '<p>' . get_field ( 'cart_field-1' ) . '</p>'; // or get_field ( 'cart_field', "69287" )
}

  ask by Deividas Krupstas translate from so

未解决问题?本站智能推荐:

1回复

也使用ACF在WooCommerce购物车中为可变产品获取自定义字段

在 WooCommerce 中,我使用高级自定义字段插件来显示一个名为“product_cart_image”的自定义字段(图像),它替换了购物车中产品的默认图像。 该代码适用于简单产品,但不适用于可变产品。 对于这些,我得到了默认图像。 以下代码位于cart.php模板文件中: 我怎样才能让它也适
1回复

在Woocommerce中每个商品名称旁边的购物车中显示产品自定义字段

我在一家商店中,每种产品的交货日期都不同。 我使用ACF将这个日期存储在一个名为shpng的自定义字段中。 我想要达到的目的是在购物车中每个产品旁边显示适当的字段。 到目前为止,我尝试的是测试了SOF( 示例 )和其他站点上列出的大约10个解决方案,但似乎没有一个起作用。 我知道如何
1回复

在WooCommerce3中将产品添加到购物车时有条件地添加订阅

嗨,我正在寻找一个代码,如果添加了普通产品,则将我的订阅 ID (2282)添加到购物车,但如果用户已经是订阅者,则不会。 随意提问。 我在 GMT+1 时区 WordPress - 4.8.1 WooCommerce – 3.1.1 WooCommerce 订阅 - 2.2.11 WooCo
1回复

有条件地限制特定产品子类别中的1个购物车项目

我发现这个代码限制只购买一种产品,但我想知道是否有可能改变它,所以客户只能购买某个子类别中的一种产品。 编码: 因此,如果客户从此特定产品子类别向购物车添加新产品,它将检查购物车中是否已存在此产品子类别中的商品,如果是这种情况,则会将其删除,并保留新添加的产品。 我怎么能实现这个目标
1回复

有条件地添加或删除购物车中的免费产品

我在 woocommerce 中有一个功能,可以自动将免费礼物添加到购物车中。 我想根据 15 的最低数量添加这个我有这个有效的代码,但是当我更新购物车时,如果数量不是 15,则不要删除该项目。 如果总 id 与 15 不同,我如何在更新购物车时自动删除产品? 感谢您的帮助
2回复

根据特定产品有条件地删除Woocommerce购物车项目

特定的WooCommerce产品只能单独放在购物车中。 那么如何在将特定产品添加到购物车时清除购物车? 以及添加其他产品时如何从购物车中删除该特定产品? 我已经知道添加特定产品时如何清空购物车,但是添加其他产品时我不知道如何从购物车中移除该特定产品。
1回复

根据产品类别有条件地处理WooCommerce购物车项目

我正在使用WooCommerce创建一个在线食品配送网站,并且需要创建“将其作为餐食”类型的加价销售供客户购买。 我已经创建了一个名为“ Make it a Meal”的产品,用户可以在其中选择饮品和自己喜欢的一面(使用变体)。 但是,我需要的是每顿主餐只能购买其中一种产品。 例:
2回复

在WooCommerce3中有条件地设置特定产品的购物车价格

在 WooCommerce 中,我使用了这个答案中的一些代码: 如果产品已被购买,则将 WooCommerce 购物车项目价格设置为零它适用于一种产品,但我想让它适用于多种产品。 因此,下面的代码,对于特定产品,如果客户已经购买,则将购物车项目价格更改$0.00 ,否则将价格设置$100 (首次购