Woocommerce, wc_customer_bought_product возвращает не верный результат

101
02 февраля 2022, 18:10

Использую обработчик woocommerce_checkout_order_processed для обработки заказа.
В коде делается проверка, есть ли такой товар у текущего пользователя, но проблема в том, что это новый пользователь и ошибка указывает что такой товар уже есть, и возможно функция wc_customer_bought_product берёт данные из кэша?
До этого делал тест этим же юзером и удалил его.
Как это поправить, чтобы данные не брались из кэша?

    foreach( $order->get_items() as $item_id => $item ){
        $variation_id = $item->get_variation_id();
        if ( ! is_user_logged_in() ) return;
        $current_user = wp_get_current_user();
        if(!empty($variation_id)){
            $hasBought = wc_customer_bought_product( $current_user->user_email, $current_user->ID, $variation_id );
            if($hasBought){
                wc_add_notice( __( 'Registration is prohibited.','wc' ), 'notice' );
                $order->update_status( 'cancelled' );
                return false;
            }
        }

В функции wc_customer_bought_product есть такие строчки:

$transient_name    = 'wc_customer_bought_product_' . md5( $customer_email . $user_id );
$transient_version = WC_Cache_Helper::get_transient_version( 'orders' );
$transient_value   = get_transient( $transient_name );

может быть здесь берутся данные из кэша?

READ ALSO
Зачем в этом коде нужны функции stripslashes() и strip_tags()?

Зачем в этом коде нужны функции stripslashes() и strip_tags()?

Пример взят из книгиФункция sanitizeString() нужна для обезвреживания пользовательского ввода перед занесением в html

207
Почему RedBean считается плохим?

Почему RedBean считается плохим?

Я решил изучить ORM, мой выбор пал на RedBean, во время обучения я узнал, что многие плохо относятся к RedBeanУзнал в интернете, что лучше изучать Doctrine...

174
Как получить base64 картинки из данных input - PHP

Как получить base64 картинки из данных input - PHP

Есть форма загрузки изображений

128
Полнотекстовый поиск по значению "de" в mySQL

Полнотекстовый поиск по значению "de" в mySQL

В поле language VARCHAR(2) содержится двухбковенная аббревиатура языка

104