2017-02-07 3 views
0

В WooCommerce я создал настраиваемое поле текстовой области в кассе страницыИзменить платежный шлюз, когда текстовое поле заполняется

так, если я пишу что-нибудь на текстовое поле платежный шлюз изменится на «Check», и если нет ничего то это будет только «PayPal»

Я понятия не имею, как это сделать, так как у меня очень мало знаний в WooCommerce

woocommerce_form_field('custom_product', array(

    'type' => 'textarea', 
    'label'  => __('Custom products', 'woocommerce'), 
    'required' => false, 
    'class'  => array('form-row-wide'), 
    'clear'  => true, 
     ), $checkout->get_value('custom_product')); 

Любая помощь будет очень высоко ценится.

Благодаря

+0

Является ли это просто флажок, который необходимо нажать для изменения Платежный шлюз? –

+0

Привет @SergioAlen это не флажок, это должно быть textarea. поэтому, когда я начинаю писать в текстовом поле, также изменяется шлюз оплаты –

+0

да, но есть ли способ изменить шлюз оплаты без текстовой области? –

ответ

0

Если вы можете увидеть флажки, чтобы выбрать способы оплаты на странице оформления заказа, то вы можете использовать JQuery для имитации щелчка когда текстовая область заполнено:

jQuery('textarea').on('input', function(){ 
    jQuery('#payment_method_cheque').click(); // check if the radio input has this id #payment_method_cheque and change if not 
}); 
+0

Я попробую jquery, если это заставило его работать –

+0

Я просто не знаю, как сделать эту работу –

1

Да, вы можете сделать что с помощью некоторого простого сценария jQuery в зависимости от того, какой платежный шлюз вы хотите включить.

Может быть вам нужен первый добавить дополнительный класс CSS к вашим texarea, чтобы лучше нацеливать его с помощью сценария запроса (я закончил немного коду для целей тестирования только).

Таким образом, ваша полный код функция будет:

add_action('woocommerce_after_order_notes', 'custom_checkout_textarea_field', 10, 1); 
function custom_checkout_textarea_field($checkout){ 

    echo '<div id="custom-texarea-field"> 
     <h2>' . __('My Field Title', 'woocommerce') . '</h2>'; 

    woocommerce_form_field('custom_product', array(

     'type' => 'textarea', 
     'label'  => __('Custom products', 'woocommerce'), 
     'required' => false, 
     'class'  => array('custom-product-ta form-row-wide'), ## @ <== HERE 
     'clear'  => true, 
    ), $checkout->get_value('custom_product')); 

    echo '</div>'; 

} 

Тогда теперь вы можете также добавить код ниже закрученным в woocommerce_checkout_before_customer_details контроля действий крюка, который будет вставлять какой-скрипт запроса на страницу оформления заказа.

В этом примере сценарий jQuery включит переключатель для способа проверки оплаты, когда ваша текстовая область будет заполнена чем-то.

Так что это дополнительный код для этой цели:

add_action('woocommerce_checkout_before_customer_details','custom_jquery_for_texarea'); 
function custom_jquery_for_texarea(){ 
    ?> 
    <script> 
    jQuery(document).ready(function($) { 
     $('.custom-product-ta textarea').on('input', function(){ 
      $('.wc_payment_method payment_method_cheque > input[name=payment_method]').prop('checked', true); 
     }); 
    }); 
    </script> 
    <?php 
} 

код идет в function.php файл вашей активной темы ребенка (или темы), или же в любом файле плагина.

Этот код протестирован и работает ...


Связанные ответ на JQuery код: JQuery: detect change in input field

WooCommerce документации: Customizing checkout fields using actions and filters