繁体   English   中英

有条件的功能,检查产品是否已经在Woocommerce 3中的购物车中

Conditional function that check if products are already in cart in Woocommerce 3

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

嗨这里提供的解决方案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 个回复

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

对于高级自定义字段(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" )
}
1 如何检查产品是否已经在购物车中

我有一个网上商店,用户只能订购 1 件/产品。 我需要检查该用户是否已经在购物车中拥有相同的产品,如果是,则提醒该用户不要再次将该产品添加到购物车中。 如果产品不在购物车中,请将其添加到购物车。 这是我首先尝试的,但它总是将产品添加到购物车,即使 If 中的条款为真。 问题是购物车。 这是我尝试 ...

2 检查产品是否已经在购物车中

我对 Woocommerce 很陌生,想问一个问题。 我做了一个功能(如下),将 10 个产品随机添加到用户的购物车中。 一切都很好,我唯一的问题是,在将产品添加到该链接之前,我需要检查产品是否在购物车中。 因为否则产品将不会添加到购物车。 有没有办法比较产品ID? ...

3 如何检查产品是否已经在购物车中?

这是我简单的购物车代码,如果要选择会话购物车,我正在尝试检查产品。 如果会话购物车为空,则如果添加了产品,则不会给出错误消息,但会显示错误消息为:致命错误:如果在会话中选择了相同产品或不同产品,则调用未定义的函数array_column()大车。 请我需要帮助。 ...

2020-05-20 09:16:42 0 29   php
4 Magento:检查产品是否已经在购物车中

在我的购物车系统中使用magento。 我在顶部菜单上有迷你购物车,当我添加产品时,它将在迷你购物车中显示带有价格的产品标题。 目前有产品数量编辑链接,但我需要迷你购物车中的数量框才能用Ajax更新数量。 我已按照以下链接http://ceckoslab.com/magento/magen ...

5 如果产品已经在购物车中,则禁用Woocommerce添加到购物车按钮

我试图在“添加到购物车”按钮上的Woocommerce中设置功能,以仅允许将特定产品添加到购物车一次。 首次将特定产品添加到购物车后,需要隐藏“添加到购物车”。 在购物车中,我可以有任意数量的产品-每个产品最多只能有数量1。 我正在做研究,发现可以使用woocommerce_a ...

6 有条件地为 WooCommerce 3 中的特定产品设置购物车项目价格

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

7 WooCommerce 3中的有条件产品价格购物车问题

我修改了一个函数,为一些会员创建自定义价格,即正常价格为1美元,但是如果您是青铜会员,则为2美元,白银会员为3美元,等等。 价格在商店和单个产品页面上已更改。 但是,将产品添加到购物车后,价格将恢复为原始金额。 我是否应该包含其他代码,以便在结帐和结算过程中始终准确更改价格? ...

8 有条件的woocommerce结帐验证取决于购物车中的产品标签

对于带有特殊产品标签的产品,我想在 woocommerce 结帐中设置另一个地址字段验证。 所以我的产品标签id是199,当带有这个标签的产品在购物车中时,验证应该是不同的。 我让它工作,但我的代码也会影响“正常”结帐,我想像往常一样进行验证。 它会产生一些额外的字段。 也许有人知道我做错了什么: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM