Задача состоит в том, чтобы сделать товар недоступным для покупки, если клиент уже купил его.
Поэтому я решил удалить товар, если покупатель добавит его в корзину.
add_action( 'woocommerce_add_to_cart', 'testtt');
function testtt()
{
$token = $_SESSION['******token'];
$dataservice = *******Service::getService('DataService');
$list = $dataservice->getArticleBlacklist( $token );
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item )
{
//Get SKU by product_id or if available variation_id
if( $cart_item['variation_id'] != 0 )
{
$prototype = new WC_Product( $cart_item['variation_id'] );
$prod_art_id = $prototype->get_sku();
}
else
{
$prototype = new WC_Product( $cart_item['product_id'] ) ;
$prod_art_id = $prototype->get_sku();
}
//convert SKU from STRING into INTEGER
$x = intval( $prod_art_id );
//Remove product
if( $x == $list->int )
{
WC()->cart->remove_cart_item( $cart_item_key );
}
else
{
continue;
}
}
Я пробовал разные виды кода
например:
//Remove product
if( $x == $list['int'] )
{
И многое другое ... ничего не работает. Но дело в том, что я знаю, что это работает. Потому что, если я изменю
add_action( 'woocommerce_add_to_cart', 'testtt');
в
add_action( 'parse_reqeust', 'testtt');
код делает то, что должен. Я очень смущен, потому что несколько дней назад я написал код с той же задачей, и он все еще работает (там мне пришлось удалить ВСЕ ДРУГИЕ товары из корзины, если «помеченный» продукт был добавлен в корзину).
Информация: в $ list я получаю артикул артикула из продукта, занесенного в черный список, как
`object {["int"]=>int(*number*)}` .
Надеюсь, кто-нибудь сможет мне помочь. Спасибо ^^