问题描述
我可以找到许多相关的问题,但是给定的解决方案已经过时,不再起作用。我能找到的最常见的解决方案是:
add_filter( 'pre_option_woocommerce_default_gateway' . '__return_false',99 );
但这不适用于最新版本的WooCommerce。
我还试图在WooCommerce会话中设置一个空值:
WC()->session->set( 'chosen_payment_method','' );
这也不起作用,woocommerce仍将默认选择结帐中列出的第一个网关...
解决方法
由于pre_option_woocommerce_default_gateway
钩不再存在,您也可以尝试以下操作,这会将所选的支付网关重置为第一个显示的支付方式:
add_action( 'wp_footer','default_payment_gateway' );
function default_payment_gateway() {
if( is_checkout() && ! is_wc_endpoint_url() ) :
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
$available_gateways_ids = array_keys($available_gateways);
$default_gateway_id = reset($available_gateways_ids);
?>
<script language="javascript">
jQuery( function($){
var a = '<?php echo $default_gateway_id; ?>',b = 'input[name="payment_method"][value="'+a+'"]';
$(b).prop('checked',true);
$(document.body).trigger('update_checkout');
});
</script>
<?php
endif;
}
代码进入活动子主题(或活动主题)的functions.php文件中。适用于2.5.x以后的所有WooCommerce版本。
或者您可以设置默认的特定付款方式,替换为:
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
$available_gateways_ids = array_keys($available_gateways);
$default_gateway_id = reset($available_gateways_ids);
通过(例如此处为“ COD”):
$default_gateway_id = 'cod';
无论如何,在单选按钮上,默认行为始终是显示选中的第一项。取消选中所有单选按钮是不寻常的。