|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
|
WooCommerce Ajax при быстром добавлении товаров не все они попадают в корзину30.09.2018, 17:03. Показов 8139. Ответов 10
Ситуация следующая, товары в корзину добавляются по ajax, всё работает отлично, но при быстром нажатии кнопки добавить в корзину на разных продуктах, идут одновременные ajax запросы и при этом не все эти товары добавляются в корзину..
Обычно последний добавляемый товар, иногда два из трех. При том в ajax ответе видно, что всё ОК, id продуктов и id вариаций возвращаются правильные, именно тех продуктов, что добавляли в корзину. Также и в php функции всё принимается правильно, но вот почему WooCommerce не добавляет все эти продукты? Сайт находится на локальном сервере. В чем может быть дело?
0
|
|
| 30.09.2018, 17:03 | |
|
Ответы с готовыми решениями:
10
При добавлении товара в корзину не отображаются кнопки для увеличения количества добавляемых товаров Ajax для добавления товаров в корзину Убрать надпись "Показаны все товары. Всего товаров: " с каталога товаров woocommerce |
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
|
| 02.10.2018, 03:00 | |
|
Вы в php разбираетесь?
0
|
|
|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
|
| 02.10.2018, 14:45 [ТС] | |
|
HectorPrima, не по канонам изложил суть вопроса? Или какая то деталь в тексте стала быть преткновением, что бы суть вошла и стала понятной?
Давайте посмотрим с другой стороны, я задал вопрос прописав тексты и заголовок с ключами, от чего польза форуму и если будет ответ то и другим пользователям. Ясно что вопросы задают те кто в чем то не разбирается, иначе вопроса бы не было. Вы же видимо гуру PHP кроме упрека больше ничего не сделали. Тут или мимо шли бы если вопрос не нравится, или ответьте по делу, показав что вы в чем то сами разбираетесь.
0
|
|
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
||
| 02.10.2018, 15:45 | ||
|
Не по теме: Не нужно в вопросе искать того чего там нет. добавился ли он реально или нет? Вы сможете сделать? Отладочную инфу куда нибудь в файл записать.
1
|
||
|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
||
| 02.10.2018, 23:15 [ТС] | ||
|
И там всё верно, все те продукты что добавляю все есть. Вставлял file_put_contents перед функцией ...add_to_cart... добавления в корзину, все ID ОК те что надо. Также подставлял file_put_contents после функции ...add_to_cart... перед выполнением get_refreshed_fragments ...add_to_cart.. тут проверяю добавлены продукты с принимаемыми id в корзину, и тоже всё ок, все добавляемые продукты с их id и id вариаций есть в корзине и прописываются в отладочный файл. WC_AJAX::get_refreshed_fragments(); Впрочем если добавлять по одному продукту то всё ок, но если сразу несколько то только один может попасть в корзину. Странно в чем это может быть дело. Добавлено через 2 часа 22 минуты То есть если проверять в PHP коде, то в отладочный файл всё пишется, вроде как все добавляемые продукты добавляются в корзину, но по факту попадают не все, обычно последний добавляемый. Добавлено через 2 часа 37 минут Возможно как то последние добавляемые продукты перезаписывают/перетирают предыдущие.
0
|
||
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
|||||||||||
| 03.10.2018, 05:14 | |||||||||||
|
Нужно в конце функции после того как она отработала и якобы все добавила получить всю корзину в массив.
Массив добавить в файл как то так
Добавлено через 2 часа 0 минут Попробуйте что то такое:
Я вот только не уверен что после добавления в корзину товара, когда мы читаем корзину она полностью с бд читается. Может текущий объект возвращает а он отличается от бд. Еще. Сомневаюсь в такой ошибке в woocommerce. Думается уже многие бы на нее нарвались. Только вот как понять что ее может влиять. Браузеры другие пробовали, версию php менять до последней к примеру (или наоборот пораньше).
0
|
|||||||||||
|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
|||||||||||
| 03.10.2018, 22:18 [ТС] | |||||||||||
|
PHP пробовал разные и 5.4+ и 7+, браузеры тоже разные пробовал.
Если сервер по быстрей, то это только уменьшает количестово багов, но не решает проблему. Я так делал после выполнения функции:
Это продукты которые должны добавится и в такой последовательности:
Попытка №1 (2 из 3 попало в корзину): Кликните здесь для просмотра всего текста
======================================== ==========
Id: 150 Vid: 356 Qty: 1 Subtotal: Name: Product Test ---------- ======================================== ========== Id: 150 Vid: 357 Qty: 1 Subtotal: Name: Product Test ---------- ======================================== ========== Id: 150 Vid: 356 Qty: 1 Subtotal: 15.99 Name: Product Test ---------- Id: 150 Vid: 358 Qty: 1 Subtotal: Name: Product Test ---------- И в результате по факту в корзине только два продукта: ID продукта ID вариации Количество 150 356 1 // 150 357 1 --> этого нету 150 358 1 Попытка №2 (1 из 3 попал в корзину): Кликните здесь для просмотра всего текста
======================================== ==========
Id: 150 Vid: 357 Qty: 1 Subtotal: Name: Product Test ---------- ======================================== ========== Id: 150 Vid: 356 Qty: 1 Subtotal: Name: Product Test ---------- ======================================== ========== Id: 150 Vid: 358 Qty: 1 Subtotal: Name: Product Test ---------- И в результате по факту в корзине только один продукт: ID продукта ID вариации Количество // 150 356 1 --> этого нету // 150 357 1 --> этого нету 150 358 1
0
|
|||||||||||
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
||
| 04.10.2018, 02:43 | ||
|
Корзина хранится в одном мета поле в базе. Т.е. при добавлении одного товара корзина по сути переписывается. Т.к. wordpress по моему не использует транзакции (я этого по логам не вижу), соответственно при быстрых операциях с одной и той же записью она может перезаписаться. Может в сопровождение разработчика обратиться. У меня не получается добиться того что бы товар переписывался. Может компьютер сильно быстрый.
1
|
||
|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
||
| 04.10.2018, 10:36 [ТС] | ||
|
Там сделана таблица товаров для быстрого заказа с ячейками и полем ввода количества товаров для каждой вариации.
При изменении поля ввода отправляется ajax запрос на добавление товара в корзину. Пробовал и если добавлять совсем разные продукты с разными ID то ситуация такая же.
0
|
||
|
716 / 473 / 258
Регистрация: 19.12.2014
Сообщений: 1,801
|
|
| 04.10.2018, 12:48 | |
Сообщение было отмечено avens как решение
Решение
в бд в одном поле все хранится!
к примеру три процесса. у каждого процесса своя перемнная $data но запись в бд конечно же общая следите за номерками 1. получили поле в переменную $data внутри {} 1. дабавили в $data[] = 1 1. записали. в бд в поле рельно находится {1} 2. получили поле в переменную $data внутри {1} 3. получили поле в переменную $data внутри {1} 2. дабавили в $data[] = 2 3. дабавили в $data[] = 3 2. записали. в бд в поле рельно находится {1,2} 3. записали. в бд в поле рельно находится {1,3} 2 потеряли. процесс 2-3 могут в процессе работы друг друга обгонять это просто один из примеров. реально. нужно разрабам на саппорт писать. может известная траба и решается как то просто
1
|
|
|
0 / 0 / 2
Регистрация: 07.01.2015
Сообщений: 79
|
|
| 04.10.2018, 18:44 [ТС] | |
|
Странно всё это, как то же добавляются все товары на других WC сайтах если пробовать быстро кликать на кнопки "Add to Cart" на страницах продуктов.. или там быстрые сервера которые быстрей обрабатывают запросы.
Надо тут им наверное вопрос задавать, ток растолковать на английском.
0
|
|
| 04.10.2018, 18:44 | |
|
Помогаю со студенческими работами здесь
11
Ошибка при добавлении в корзину SEO URL - ошибка в при добавлении товара в корзину Настраиваемые поля во всплывающем окне при добавлении в корзину VirtueMart 2 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|