При смене местоположения кода купона Woocommerce кнопка оплаты перестает работать? - PullRequest
0 голосов
/ 26 апреля 2018

Хорошо, поэтому я искал решение этой проблемы везде, но я не могу понять, почему это происходит.Логически это не имеет смысла.Я на самом деле не кодер, но я знаю немного базового PHP.

Я использовал следующий код, чтобы просто переместить поле купона в оформлении заказа Woo в другое место:

/*** MOVE THE COUPON CODE ***/

remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form', 10 );
add_action( 'woocommerce_after_order_notes', 'woocommerce_checkout_coupon_form' );

После этогоПри добавлении кода кнопка «Купить сейчас» для завершения заказа ничего не делает при клике, как если JS отключен.

Когда код удаляется и код купона возвращается в исходное местоположение, кнопка работает нормально.

Кто-нибудь еще сталкивался с этим?Это так странно.

Вы можете увидеть страницу (с реализованным выше кодом) здесь:

http://insiders.nomadmoguls.com/payment/?add-to-cart=205479&variation_id=205481&attribute_pa_type-of-pass=yearly

Заранее спасибо всем за помощь!Это было мое последнее средство после нескольких часов поиска решения самостоятельно!

1 Ответ

0 голосов
/ 26 апреля 2018

Проблема вызвана используемым хуком, woocommerce_after_order_notes.Это приводит к тому, что <form name="checkout"> закрывается до кнопки отправки, поэтому кнопка «Зарегистрироваться сейчас» больше не находится внутри этой формы, поэтому она не может отправить ее при нажатии, поскольку ваша (перефразированная)Разметка выглядит так:

<form name="checkout">
    <!-- coupon code stuff -->
</form>
<button type="submit">Sign Up Now</button>

Посмотрите это видео со мной на сайте с открытыми Dev Tools.Вы можете увидеть кнопку «Зарегистрироваться сейчас» вне формы «Оформить заказ» - как только я перетащу ее в форму, она будет работать просто отлично.

Относительно распространенным заблуждением является то, что «Код купона» - это проверка.поле формы, когда оно действительно является отдельной отдельной формой , поэтому, конечно, оно не хочет быть вложенным непосредственно в форму проверки (у вас не может быть форм внутри форм).

Это означает, что у вас есть два реальных варианта, без каких-либо сумасшедших действий, таких как повторное связывание обработчика щелчка на кнопке отправки для отправки формы:

  1. Используйте зацепку, которая идет после формы оформления заказа, например woocommerce_after_checkout_form вместо woocommerce_after_order_notes.
  2. Сохраните форму купона на прежнем месте.
...