jquery - stripe - ¿Cómo evitar que WooCommerce seleccione el método de pago predeterminado en la página de pago?
stripe colombia (2)
OK, funcionó. Aquí es cómo:
- Copie el archivo javascript de:
/wp-content/plugins/woocommerce/assets/js/frontend/checkout.js
dentro:
/wp-content/themes/Your-Theme/woocommerce/js/checkout.js
Abra el archivo recién creado y busque el siguiente código:
if ($(''.woocommerce-checkout'').find(''input[name=payment_method]:checked'').size() === 0) { $(''.woocommerce-checkout'').find(''input[name=payment_method]:eq(0)'').attr(''checked'', ''checked''); }
Debe estar alrededor de la línea 298. Adelante y coméntelo.
Agregue esto a su archivo functions.php:
function wpchris_override_woo_checkout_scripts() { wp_deregister_script(''wc-checkout''); wp_enqueue_script(''wc-checkout'', get_stylesheet_directory_uri() . ''/woocommerce/js/checkout.js'', array(''jquery'', ''woocommerce'', ''wc-country-select'', ''wc-address-i18n''), null, true); } add_action(''wp_enqueue_scripts'', ''wpchris_override_woo_checkout_scripts''); function wpchris_unselect_payment_method() { echo "<script>jQuery( ''.payment_methods input.input-radio'' ).removeProp(''checked'');</script>"; } add_action(''woocommerce_review_order_before_submit'',''wpchris_unselect_payment_method'' ); function wpchris_filter_gateways( $gateways ){ global $woocommerce; foreach ($gateways as $gateway) { $gateway->chosen = 0; } return $gateways; } add_filter( ''woocommerce_available_payment_gateways'', ''wpchris_filter_gateways'', 1);
Ahora, el método de pago predeterminado no debería marcarse cuando actualiza la página de pago.
En la página de pago se presentan los métodos de pago y el primero se selecciona de forma predeterminada y de forma automática. Necesito evitar la selección, por lo que WC no selecciona ningún método de pago inicialmente.
Intenté 2 cosas hasta ahora:
jQuery desde la consola de Chrome:
jQuery (''.payment_methods input.input-radio'') .prop (''verificado'', falso);
resultado:
[<input id="payment_method_paypal" type="radio" class="input-radio" name="payment_method" value="paypal" data-order_button_text="Proceed to PayPal" checked="checked">,
<input id="payment_method_accountfunds" type="radio" class="input-radio" name="payment_method" value="accountfunds" data-order_button_text>]
Elimine el código del archivo de plantilla de pago WoolComp.php WooCommerce:
marcado ($ gateway-> elegido, falso);
Ninguno de los dos funciona ¿Cómo hacerlo? ¿Algún fragmento o sugerencia para eso, por favor?
EDITAR:
También intenté esto:
function wpchris_filter_gateways( $gateways ){
global $woocommerce;
foreach ($gateways as $gateway) {
$gateway->chosen = 0;
}
return $gateways;
}
add_filter( ''woocommerce_available_payment_gateways'', ''wpchris_filter_gateways'', 1);
Tengo el mismo problema y lo he resuelto de esta manera:
Reemplazar el archivo checkout-js con mi hijo tema checkout-override-js.
Luego comentado el siguiente código:
línea: 48: this.init_payment_methods();
línea: 58:
init_payment_methods: function() {
var $payment_methods = $( ''.woocommerce-checkout'' ).find( ''input[name="payment_method"]'' );
// If there is one method, we can hide the radio input
if ( 1 === $payment_methods.size() ) {
$payment_methods.eq(0).hide();
}
// If there are none selected, select the first.
if ( 0 === $payment_methods.filter( '':checked'' ).size() ) {
$payment_methods.eq(0).attr( ''checked'', ''checked'' );
}
// Trigger click event for selected method
$payment_methods.filter( '':checked'' ).eq(0).trigger( ''click'' );
},
línea: 113: wc_checkout_form.init_payment_methods();
Esto eliminará la selección del método de pago predeterminado. Puede jugar con estos códigos para que se adapte a sus necesidades.