Отключить автоматическую корзину / checkout_update добавить опцию вручную, чтобы обновить до размещения заказа - PullRequest
0 голосов
/ 10 декабря 2018

Текущая проблема: мой калькулятор проверки обновляет тарифы доставки слишком часто, в настоящее время он обновляет / обновляет тарифы доставки, когда я меняю способ оплаты, или я выбираю другой способ доставки, а также когда я изменяю поле адреса или изменяю количествов корзине и даже при открытии корзины в браузере.(Я понимаю, что некоторые продавцы могут нуждаться в их обновлении из-за сборов, связанных с определенными платежными шлюзами или способами доставки, но для меня, почему мне нужно снова увеличивать ставки доставки в реальном времени, когда все, что я делал, это нажимал на местный пикап, или что-то, что не должно 'это никак не повлияет на тарифы перевозчика)

Что я пытаюсь сделать: я бы хотел, чтобы калькулятор оформления заказа / корзины остановил автоматическое обновление / обновление тарифов на доставку вместе до конца оформления заказа, где ондолжен поставить 1 после того, как я ввел все атрибутивные факторы в соответствующие поля, необходимые для совершения звонка, по крайней мере, IMO.

Я прочитал сотни постов, но все, что я вижу, это способы обеспечения обновления калькулятора при определенных вызовах Ajax. Мне нужно, чтобы он был отключен для любого фактора.Я все еще довольно новичок здесь, поэтому я прошу прощения, если я нарушаю некоторые протоколы, пожалуйста, прости, и любая помощь будет принята с благодарностью.

Обновление: После размышлений об этом я чувствую идеальное решение (если возможно)) будет размещать кнопку в области отгрузки для оплаты или вниз по кнопке «разместить заказ», которая позволит мне или клиенту вручную извлекать API тарифа доставки и обновлять итоги при необходимости и покончить с полным автоматическим процессом (этоМне также было бы полезно, если бы woocommerce прекратил попытки совершать новый вызов после каждого нажатия клавиши), но это также потребовало бы наличия функции или чего-то подобного, чтобы не размещать ордер, если только эта кнопка не была нажата непосредственно передразместить кнопку заказа (и им нужно будет нажать ее еще раз после внесения каких-либо изменений в поле адреса или изменения способа доставки или любого другого фактора, который может повлиять на итоговую сумму заказа, исключая такие вещи, как имя, номер телефона, название компании или любой другойдругая область, о которой вы можете подумать, это никак не повлияет на общую сумму заказа).

8 часов спустя - я все еще бьюсь головой об этом, никаких реальных результатов.Единственное, чего я добился - это скрыл счет доставки в корзине с помощью этого

function disable_shipping_calc_on_cart( $show_shipping ) {
if( is_cart() ) {
    return false;
}
return $show_shipping;
}
add_filter( 'woocommerce_cart_ready_to_calc_shipping',       'disable_shipping_calc_on_cart', 99 );

Но на самом деле он не останавливает вызов API, а просто скрывает его.Хотя я думаю, что можно сэкономить время, не создавая пользовательский интерфейс для поля, это незначительная сумма.Если бы только корзина отображала общую сумму заказа / разбивку по налогам, как это происходит в раскрывающемся меню на рабочем столе или на боковой панели мобильного устройства, это значительно ускорило бы мою работу с корзиной.В любом случае, я предпочитаю, чтобы этого не было в корзине.
Отжатие, если бы только все автоматическое обновление ожидало нажатия кнопки в конце, я бы сэкономил столько времени.Как и мои клиенты.Я имею в виду, разве это не имеет смысла.Позвольте мне описать мой рабочий процесс через раунды тестирования.Восемь платежных шлюзов, настроенных с помощью правил, предоставляющих видимость, должны быть протестированы через каждую переменную, и вот как это, по-видимому, нужно сделать, чтобы протестировать интерфейс (по крайней мере, в моем случае я очень новичок в этом, и я даже не думалсоздание веб-сайта, пока я не подошел 3-4 месяца назад об этом).Я сокращу весь опыт, перейдя прямо к той части, где я вхожу в корзину с 1 из моих многочисленных заказов.

в браузере открывается корзина ... API-интерфейс доставки вызывает 10-15 секунд для обратного вызова, при необходимости обновляет количество заказов ... API-интерфейс доставки выполняет 10-15 секунд (как указано выше, здесь не отображается калькуляция доставки.Слава Богу, меня не может споткнуть другой ... Доставка вызова API 10-15 секунд, пока он еще в корзине), Перейти к оформлению заказа, Автоматическое заполнение полей учетными данными учетной записи ... Доставка вызова API 10-15 секунд, возможно, потребуетсячтобы проверить доставку на большее расстояние или коммерческие / жилые тарифы, измените поля адреса .... вызов API доставки 10-15 секунд, выберите способ доставки ... вызов API доставки 10-15 секунд, выберите способ оплаты & ... даAPI доставки звонит через 10-15 сек ..... и наконец я могу оформить заказ через передний конец.:( звук утомляет вас? разве не имеет смысла обойти все эти вызовы API доставки и просто сделать 1 в самом конце оформления заказа? Хм, это как 2 минуты потенциально потерянного времени в процессе оформления заказа. Этот вызов мог бы бытьразрешается через 1, 10-15 секунд ручным нажатием кнопки для обновления.

IDK примерно через 10 часов ... У меня был немного больший прогресс, когда я удалил update_totals_on_change из всех полей оформления заказа, кроме почтового индекса. Iоставил ZIP включенным, потому что я боялся, что этот метод может позволить вам выполнить оставшуюся часть процесса заказа. Затем вернитесь к полям доставки, измените адрес и не вызовите update_total и запустите процесс заказа. На данный момент я не уверен, еслиэто было необходимо или нет, но я подумал, что если какой-то фактор действительно повлияет на общую сумму заказа, то это будет почтовый индекс, и мой API доставки не разрешит процесс заказа, если все остальные поля адреса не соответствуют почтовому индексу.лучше безопасно. Так что сэкономит кучу времени для тех,поля (хотя эти поля не блокируются при вызове API, это делают так, как это делают радиостанции доставки и оплаты, но, по крайней мере, это экономит ваше ожидание на 1 после самого последнего нажатия клавиши).Если последнее нажатие клавиши не находится в поле ZIP, хм, мне может понадобиться переместить поле дальше вверх по форме, чтобы позволить ему начать работу раньше.О, долго касательно, но мысли вслух ...) хм, если бы только автоматизированный процесс позволял вам переключать эти радиостанции во время вызова, вы могли бы потенциально выполнить заказ за один присест и позволить процессу делать свое дело все время, наконец решая себя наконец, кажется немного неэффективным с точки зрения затрат, но звучит как самая рациональная идея, о которой я когда-либо думал ... Да, разблокировать все поля / радиоприемники, что угодно ... пока API обрабатывает ... что яm - это способ получить доступ к серым областям, с которыми невозможно взаимодействовать во время обновления / обновления ... Есть идеи?

На следующий день - после того, как я потерял сознание, я не сталУ нас нет времени, чтобы проверить, что делал удаление update_totals_on_change из полей доставки.К сожалению, сегодня утром я обнаружил, что это ничего не произошло.Все поля адреса по-прежнему автоматически обновляются при изменении, разочаровывает.Я подумываю добавить более удобный плагин для удобства использования, чтобы учесть изменения количества при оформлении заказа.Это, по крайней мере, устранит необходимость перехода на страницу корзины.Так что это может сократить шаг или два.

Еще одно обновление: Итак, я нашел этот фрагмент кода в wp-content / plugins / woocommerce / templates / checkout / payment.php

<?php esc_html_e( 'Since your browser does not support JavaScript, or it is disabled, please ensure you click the <em>Update Totals</em> button before placing your order. You may be charged more than the amount stated above if you fail to do so.', 'woocommerce' ); ?>
        <br/><button type="submit" class="button alt" name="woocommerce_checkout_update_totals" value="<?php esc_attr_e( 'Update totals', 'woocommerce' ); ?>"><?php esc_html_e( 'Update totals', 'woocommerce' ); ?></button>
    </noscript>

Так что, кажется, есть что-то, что распространит указанную кнопку, если ваш браузер не поддерживает java-скрипт.Однако я не хотел бы отключать JavaScript для всего своего сайта, но, возможно, я смогу отключить его только при оформлении заказа, и это не повлияет ни на что, кроме создания вышеуказанной кнопки при оформлении заказа.Заботясь об этом, мы снова будем благодарны за любые советы.

Новая информацияТак что после переворачивания это снова и снова.Я обнаружил, что, отключив скрипт jquery-blockui, он позволит мне изменить любое поле в извлечении без блокировки во время вызова.Однако, когда он отключен, при изменении поля вызов не поступает, поэтому мне нужно найти способ инициировать вызов вручную, а затем каким-то образом заблокировать его, поэтому клиент должен обновить информацию непосредственно перед размещением заказа.

1 Ответ

0 голосов
/ 24 мая 2019

Не полный ответ на вашу проблему, но я борюсь с точно такой же проблемой. Изменения доставки Woocommerce, необходимые для поддержки отправки вызовов по API HTTP

Хотя мне удалось остановить его, вызывая и вычисляя доставку при добавлении / изменении элемента корзины, добавив следующее в метод Calculate_Shipping моегоПользовательский плагин доставки.

if ('https://aaa.bbb/checkout/' !== $_SERVER['HTTP_REFERER']) {
     return;
} 

Я начинаю думать, что мне нужно сделать то же самое, над чем вы работали, добавив кнопку расчета доставки, которую необходимо нажать перед оформлением заказа.Он также должен быть запущен снова после любого обновления адреса до того, как оформление заказа будет разрешено завершить.

Решали ли вы свою проблему в последние месяцы?Если так, буду признателен за ваше решение!?!

...