在Checkout页面上显示付款方式,默认情况下自动选择第一种付款方式。我需要阻止选择,因此WC最初没有选择任何付款方式。
到目前为止,我尝试了2件事:
Chrome控制台中的jQuery:
jQuery('.payment_methods input.input-radio').prop('checked',false);
结果:
[<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>]
从payment-method.php Woocommerce模板文件中删除代码:
检查($ gateway-> chosen,false);
都没有工作。怎么做?请提供任何摘要或建议吗?
编辑:
还尝试了这个:
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);
最佳答案
好吧,让它正常工作。方法如下:
从以下位置复制JavaScript文件:/wp-content/plugins/woocommerce/assets/js/frontend/checkout.js
变成:/wp-content/themes/Your-Theme/woocommerce/js/checkout.js
打开该新创建的文件,然后搜索以下代码:
if ($('.woocommerce-checkout').find('input[name=payment_method]:checked').size() === 0) {
$('.woocommerce-checkout').find('input[name=payment_method]:eq(0)').attr('checked', 'checked');
}
它应该在298行附近。继续进行注释。
将此添加到您的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);
现在,刷新“结帐”页面时不应检查默认的付款方式。