Поддержка WooCommerce Помощь в написании функции Woocommerce

  • Помогите, пожалуйста, с решением проблемы.

    На сайте стоит woocommerce.
    Есть кастомный плагин, который делает «анализ записи голоса».
    Есть товар, который продаётся по штучно в качестве доступа к функционалу этого плагина.

    Т.е. покупатель приобретает товар, затем у него в личном кабинете появляется то количество доступных «анализов голоса», которое он приобрёл.

    Количество купленных или оставшихся «анализов голоса» хранится в таблице wc_customer_lookup

    Проблема: если покупатель приобретает товар впервые, то количество увеличивается, если же он делает это повторно, то количество не прибавляется к оставшимся, а просто обновляется на приобретённое количество.

    Функция обновления количества:

    function add_activations($order_id, $order_status_transition_from, $order_status_transition_to)
    	{
    
    		global $wpdb, $table_prefix;
    
    		if (
    			!in_array($order_status_transition_to, ['processing', 'completed']) ||
    			($order_status_transition_from == 'processing' && $order_status_transition_to == 'completed')
    		) {
    			return;
    		}
    		$order = wc_get_order($order_id);
    
    		$activations = 0;
    		foreach ($order->get_items() as $item) {
    			if (in_array($item->get_product_id(), $this->activation_product_ids)) {
    				$activations += $item->get_quantity();
    			}
    		}
    
    		if ($activations > 0) {
    			$user_id = $order->get_user_id();
    
    			if ($user_id) {
    				$result = $wpdb->query("
                        UPDATE <code>&quot; . $table_prefix . &quot;wc_customer_lookup</code>
                        SET <code>media_recorder_activations</code> = <code>media_recorder_activations</code> + " . (int) $activations . "
                        WHERE <code>user_id</code> = '" . $user_id . "'
                    ");
    			}
    		}
    	}
  • Тема «Помощь в написании функции Woocommerce» закрыта для новых ответов.