在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);



现在,刷新“结帐”页面时不应检查默认的付款方式。

09-20 05:49