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

    Всем привет!
    Опять таки , смотрю ни кто более аккуратного способа не предложил,поэтому вот мои
    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
    	}
    }

    Надеюсь поможет!
    Ответ написан
    1 комментарий
  • Как переместить пункт "Доставка" на странице оплаты в вордпресс?

    Ну раз пока,что ни кто не предложил более изящного решения,то вставлю я свои 5 копеек:
    Привет...
    Ну как вариант переписать шаблоны Woocommerce
    Шаблоны Woocommerce хранятся в папке плагина Woocommerce : wp-content/plugins/woocommerce/templates
    В твоём случаи нас интересуют шаблоны wp-content/plugins/woocommerce/templates/checkout
    Вижу ты создал дочернюю тему для своей темы.
    1)Так в этой дочке создаёшь такую же структуру т.е. папку woocommerce , в ней папку checkout , БЕЗ папки templates!
    2) В папку checkout т.е. ( shopkeeper-child/woocommerce/checkout ) копируешь нужные файлы из плагина т.е. из ( wp-content/plugins/woocommerce/templates/checkout ) , в твоём случаи это файлы:
    review-order.php и form-billing.php . Эти два шаблона и придётся подправить.
    3) В файле review-order.php нужно будет забрать(вырезать) кусок кода .В моём редакторе начало куска на строке №70 и окончание на строке №78 ...
    Вот этот кусок:
    <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
        <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>
            <?php wc_cart_totals_shipping_html(); ?>
        <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>
    <?php endif; ?>

    4) Вырезать и вставить его в фаил form-billing.php
    Вставляем получается сразу после заголовка "ОПЛАТА И ДОСТАВКА"
    В моём редакторе он на строке №33 ,вот так он выглядит :
    <h3><?php _e( 'Billing details', 'woocommerce' ); ?></h3>

    Только не тупо вставить а поместить в теги <table></table>
    В общем после
    <h3><?php _e( 'Billing details', 'woocommerce' ); ?></h3>

    Вставляем :
    <table class="pilot_cafe_custom_show_shipping">
    <?php if ( WC()->cart->needs_shipping() && WC()->cart->show_shipping() ) : ?>
        <?php do_action( 'woocommerce_review_order_before_shipping' ); ?>
              <?php wc_cart_totals_shipping_html(); ?>
        <?php do_action( 'woocommerce_review_order_after_shipping' ); ?>
    <?php endif; ?>
    </table>

    5) В дочерней теме в файле style.css можно добавить стили:
    table.pilot_cafe_custom_show_shipping th { display: none; }

    исчезнет надпись "Доставка".
    Всё выше сказанное на лету работает в теме storefront,
    думаю и у тебя сработает.
    Теперь немного "БОЛИ":
    Wordpress постоянно обновляется и как следствие Wocommerce вместе с ним.
    Поэтому не исключено ,что когда-то и шаблоны эти ( review-order.php и form-billing.php )
    тоже подправят. А значит у шаблона будет новая версия.
    В самом начале эти шаблоны имеют такую шапку :
    * @package WooCommerce/Templates
    * @version 3.3.0

    Вот и номер версии...в общем если WooCommerce обновился,то лезем в плагин
    находим эти шаблоны,смотрим номер версии и сравниваем с номером версии ,когда-то
    скопированных в нашу дочернюю тему. Если номер версии отличается, то исправляем в наших скопированных
    шаблонах на новый номер. Проверям...
    работает?Круть...радуемся!
    НЕ работает?Хреново...опять go to toster.ru
    Ответ написан
    3 комментария