How to not remove items from Wishlist in Magento 2
Updates [April 20,2023] : I have developed an extension for this, please check details from link DW Wishlist Extension.
Magento 2 has a functionality that removes the item from wishlist if its added to cart from wishlist.
I had a task requirement, it was B2B project so mostly the vendors will buy the same set of products on a regular basis, so wishlist will act as reminder list, hence items should not be deleted from wishlist.
Explaining here the way to achieve this.
1) Define a plugin in your custom module’s di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Wishlist\Model\Item">
<plugin name="retainWishlistItems" type="Namespace\Modulename\Plugin\RetainWishlistItems" />
</type>
</config>
2) Create a plugin
<?php
/**
* Namespace_Modulename
*/
namespace Namespace\Modulename\Plugin;
use Magento\Checkout\Model\Cart;
use Magento\Wishlist\Model\Item;
class RetainWishlistItems
{
/**
* @param Item $item
* @param Cart $cart
* @return array
*/
public function beforeAddToCart(Item $item, Cart $cart)
{
// Return delete item false after adding item from wishlist to cart
return [$cart, false];
}
}
Hope it is helpful.
