WooCommerce 购物车:获取特定已删除商品的购物车商品密钥 ID

WooCommerce cart: Get the cart item Key ID of a specific removed item

提问人:Greg Bialowas 提问时间:9/5/2023 最后编辑:LoicTheAztecGreg Bialowas 更新时间:9/5/2023 访问量:41

问:

在 WooCommerce 中,我有一个自定义模板,我需要在其中检查删除的产品(项目)是否特别独一无二,然后根据该信息进行进一步编码。cart.php

有没有办法在不使用钩子的情况下找到已删除项目的这个 ONE Key ID,即通知中的那个?'“Item X” removed. Undo?'

我在任何地方都找不到任何解决方案。

PHP 模板 会话 WooCommerce 购物车

评论

0赞 Snuffy 9/5/2023
“不使用钩子”是什么意思?钩子是专门为此制作的。如果你想要这种方法,你也可以使用 js 钩子。stackoverflow.com/questions/36760650/......

答:

1赞 LoicTheAztec 9/5/2023 #1

您可以通过两种方式删除购物车商品:

  • 从WC_Cart对象使用:

    $removed_items = WC()->cart->get_removed_cart_contents(); 
    
  • 从WC_Session对象使用:

    $removed_items = WC()->session->get('removed_cart_contents'); 
    

要定位到特定已移除的产品并获取其密钥 ID(以及撤消 URL 或从中移除 URL),请使用:

$targeted_product_id = 25; // Set the product ID to target
$targeted_item_key   = ''; // Initializing

// Get removed cart items
$removed_items = WC()->cart->get_removed_cart_contents();

// Loop through removed cart items
foreach( $removed_items as $item_key => $item ) {
    $product_id   = $item['product_id'];
    $variation_id = $item['variation_id'];

    if( in_array($targeted_product_id, [$product_id, $variation_id]) ) {
        $targeted_item_key = $item_key; 
        break;
    }
}
// get the Undo URL
$undo_url = WC()->cart->get_undo_url( $targeted_item_key );

// Test output Undo URL
echo '<a href="'. $undo_url .'">'. __("Undo Url") . '</a>';

// get the remove URL
$remove_url = WC()->cart->get_remove_url( $targeted_item_key );

// Test output remove URL
echo '<a href="'. $remove_url .'">'. __("Remove Url") . '</a>';

评论

0赞 Greg Bialowas 9/5/2023
为了更清楚地说明问题:默认情况下,我在购物车 .php 上以编程方式添加产品。如果用户删除它,我不想再次将产品(它是付费会员)强加给该用户。这就是为什么我需要检查此会员资格是否已从购物车中删除。当我使用 时,要么 or this 输出当前 wp 会话 (?) 中删除的所有产品。如果用户删除了成员身份,然后重新添加并再次删除,这将粉碎使用 .所以我正在寻找一种方法来拦截通知中的ID谢谢你的努力!cart contents->cart->sessioncart contentsitem removed, undo?