我想以编程方式在woocommerce结帐页面设置默认付款方式(收音机已检查),基于使用php(不是jquery)的条件。
假设我有两种付款方式:
'pay_method1' and 'pay_method2'
大多数解决方案建议删除方法以选择其他方法:
unset($gateways['pay_method1']) //auto selects pay_method2 naturally
但我不想删除该方法。我只想在结帐页面加载/重新加载时设置默认值,因此用户仍然可以根据需要切换方法。
我计划在functions.php
中执行以下操作:
add_action("woocommerce_before_checkout_form", "custom_before_checkout_action");
function custom_before_checkout_action() {
if ($my_condition) {
//default to pay_method1 - how??
}
else {
//default to pay_method2 - how??
}
}
这是否可以告诉woocommerce应该以这种方式检查哪种付款方式?
答案 0 :(得分:1)
你可以看到woocommerce模板结构checkout文件夹有文件payment-method.php。有付款方式$ gateway对象 有财产$ gateway->选择访问真正的默认检查支付网关。
add_filter('woocommerce_available_payment_gateways', 'show_custom_payment_gateways');
function show_custom_payment_gateways( $available_gateways){
global $woocommerce;
$available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways();
if( $myconditon ){
$available_gateways['pay_method2']->chosen = true;
$available_gateways['pay_method1']->chosen = false // default to false unchecked.
}
}