Задать вопрос
@vyacheslav_babenko

Как скрыть блок оплаты при выборе самовывоза wordpress?

Как реализовать такую штуку: на странице корзины есть выбор доставки (бесплатная доставка и самовывоз), нужно, чтобы при выборе самовывоза далее на странице checkout (оформлении заказа) скрывался блок оплаты. Пробовал вот такой скрипт, но при переходе на страницу оформлении заказа блок не скрывался ( а скрывался только после того, как два раза нажмешь на пункт самовывоза на этой странице)
var toggle_status = 1;
jQuery("body").on("click", "input#shipping_method_0_local_pickup3", function () { 	 
 	  setTimeout(function(){
 		  jQuery("input#shipping_method_0_local_pickup3").trigger("click");
 		}, 10000);
       if (toggle_status == 1) {
             jQuery(".wc_payment_methods.payment_methods.methods").hide(100);
             toggle_status = 0;
       } 
       else {
             jQuery(".wc_payment_methods.payment_methods.methods").show(100);
             toggle_status = 1;
       }

Также пробовал вариант с тем, чтобы блоку присваивать класс hidden:
jQuery("body").on("click", "input#shipping_method_0_local_pickup3", function () {
    jQuery(".wc_payment_methods.payment_methods.methods").toggleClass('hidden');
 });

Все равно та же проблема, убирается только при двойном нажатии.
  • Вопрос задан
  • 180 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
Всем привет!
Опять таки , смотрю ни кто более аккуратного способа не предложил,поэтому вот мои
5 копеек!
Код проверил на теме storefront и всё работало.
add_action( 'wp_footer', 'skryt_block_sposoba_oplaty',9999 );
function skryt_block_sposoba_oplaty() {

	// Создадим переменну со значением выбора способа доставки
	$chosen_shipping_methods = WC()->session->get( 'chosen_shipping_methods' )[0];

	// Проверяем выбран ли по умолчанию т.е. при загрузки страницы "самовывоз"? 
	if ( 0 === strpos( $chosen_shipping_methods, 'local_pickup:3' ) ){
		?>
		<!-- Если да , то...  -->
		<script type="text/javascript">
			jQuery(document).ready(function($) {
				// Ждём когда на странице закончится Ajax
				$( document ).ajaxStop(function() {
					// После окончания (спустя мгновение) монипулируем DOM-элементами 
					setTimeout(function(){
						// Это наш список с выбором способа оплаты
						var ViborMetodaOplaty = $('div#payment').find('ul.wc_payment_methods') ;
						// Это пункт выбора способа доставки "самовывоз"
						var Samovyvoz = $('input#shipping_method_0_local_pickup3') ;
						// Если НЕ выбран "самовывоз",то...
						if ( ! Samovyvoz.is(':checked')) {
							// то показываем список с выбором способа оплаты
							ViborMetodaOplaty.fadeIn("fast");
							// Если ВЫБРАН "самовывоз",то...
						}else{
							// то через slideUp скрываем список с выбором способа оплаты
							ViborMetodaOplaty.slideUp( "fast", function() {
								ViborMetodaOplaty.fadeOut();
							});
						};
					}, 100);
				});			
			});
		</script>
		<!-- А,что если по умолчанию т.е. при загрузки страницы НЕ ВЫБРАН "самовывоз"?  -->
	<?php }else{
		?>
		<!-- Если так, то...  -->
		<script type="text/javascript">
			jQuery(document).ready(function($) {					
				// Ждём когда на странице закончится Ajax
				$( document ).ajaxStop(function() {		
					// После окончания (спустя мгновение) монипулируем DOM-элементами				
					setTimeout(function(){
						// Это наш список с выбором способа оплаты
						var ViborMetodaOplaty = $('div#payment').find('ul.wc_payment_methods') ;
						// Это пункт выбора способа доставки "самовывоз"
						var Samovyvoz = $('input#shipping_method_0_local_pickup3') ;
						// Если ВЫБРАН "самовывоз",то...
						if ( Samovyvoz.is(':checked')) {
							// то через slideUp скрываем список с выбором способа оплаты
							ViborMetodaOplaty.slideUp( "fast", function() {
								ViborMetodaOplaty.fadeOut();
							});
							// Если НЕ выбран "самовывоз",то...
						}else{
							// то показываем список с выбором способа оплаты
							ViborMetodaOplaty.fadeIn();
						};
					}, 100);
				});			
			});
		</script>
		<?php
	}
}

Надеюсь поможет!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 17:50
7000 руб./за проект
18 дек. 2024, в 17:26
5000 руб./за проект
18 дек. 2024, в 17:23
1500 руб./за проект