Отключить автоматическую корзину /checkout_update добавить опцию вручную, чтобы обновить до размещения заказа
Текущая проблема: Мой калькулятор проверки обновляет тарифы доставки слишком часто, в настоящее время он обновляет / обновляет тарифы доставки, когда я изменяю способ оплаты, или я выбираю другой способ доставки, а также когда я изменяю поле адреса или изменяю количество в корзине & это даже делает один при открытии корзины в браузере. (Я понимаю, что некоторые продавцы могут нуждаться в их обновлении из-за сборов, связанных с определенными платежными шлюзами или способами доставки, но для меня, почему мне нужно снова увеличивать ставки доставки в реальном времени, когда все, что я делал, это нажимал на местный пикап, или что-то, что не должно ' не оказывает никакого влияния на тарифы перевозчиков)
Что я пытаюсь сделать: я хотел бы, чтобы калькулятор оформления заказа / корзины остановил автоматическое обновление / обновление тарифов на доставку все вместе до конца оформления заказа, где он должен быть установлен 1 после того, как я ввел все атрибутивные факторы в соответствующие поля, необходимые для вызов, по крайней мере, ИМО.
Я прочитал сотни постов, но все, что я поднимаю, - это способы проверки кассового обновления на определенных вызовах 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 из всех полей оформления заказа, кроме почтового индекса. Я оставил ZIP включенным, потому что боялся, что этот метод позволит вам пройти через весь процесс заказа. Затем вернитесь к полям доставки, измените адрес, не вызывайте update_total и выполняйте процесс заказа. На данный момент я не уверен, было ли это необходимо или нет, но я подумал, что если какой-то фактор действительно повлияет на общую сумму заказа, это будет почтовый индекс, и мой API доставки не разрешит процесс заказа, если все остальные поля адреса не соотносить с почтовым индексом. Так что я хоть лучше в безопасности. Таким образом, это сэкономит кучу времени для этих полей (хотя эти поля не блокируются при вызове API, как это делают радиостанции доставки и оплаты, но, по крайней мере, это экономит время ожидания на 1 после самого последнего нажатия клавиши. Если последнее нажатие клавиши не является в поле ZIP, хм, мне может понадобиться переместить поле дальше вверх по форме, чтобы оно могло начаться раньше в процессе. О, долго касательно, но мысли вслух...) хм, если только автоматизированный процесс позволял вам переключать эти радиомодули во время его вызова вы могли бы потенциально выполнить заказ за один присест и позволить процессу делать свое дело все время, наконец решая себя в конце, кажется немного неэффективным с точки зрения затрат, но звучит как самая рациональная идея, о которой я думал пока... Да, разблокируйте все поля / радио, что угодно.... пока API обрабатывает... то, что я получаю, это способ получить доступ к серым областям, с которыми невозможно взаимодействовать во время обновление / обновление... Есть идеи?
На следующий день - после того, как я потерял сознание, у меня не было времени проверить, что делал удаление 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, он позволит мне изменить любое поле в извлечении без блокировки во время вызова. Однако, когда он отключен, при смене поля вызов не выполняется, поэтому мне нужно найти способ инициировать вызов вручную, а затем каким-то образом заблокировать его, поэтому клиент должен обновить информацию непосредственно перед размещением заказа.
0 ответов
Не полный ответ на ваш вопрос, но я борюсь с точно такой же проблемой. Изменения доставки WooCommerce, необходимые для поддержки вызовов API доставки HTTP
Хотя мне удалось перестать вызывать его и рассчитывать стоимость доставки при добавлении / изменении товара в корзину, добавив следующую информацию в метод Calculate_Shipping моего пользовательского плагина доставки.
if ('https://aaa.bbb/checkout/' !== $_SERVER['HTTP_REFERER']) {
return;
}
Я начинаю думать, что мне нужно сделать то же самое, над чем вы работали, добавив кнопку расчета доставки, которую нужно нажать перед оформлением заказа. Он также должен быть запущен снова после любого обновления адреса до того, как оформление было разрешено завершить.
Вы решили свою проблему в последние месяцы? Если так, буду признателен за ваше решение!?!