Использую обработчик 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 );
может быть здесь берутся данные из кэша?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пример взят из книгиФункция sanitizeString() нужна для обезвреживания пользовательского ввода перед занесением в html
Я решил изучить ORM, мой выбор пал на RedBean, во время обучения я узнал, что многие плохо относятся к RedBeanУзнал в интернете, что лучше изучать Doctrine...
В поле language VARCHAR(2) содержится двухбковенная аббревиатура языка