在PHP中有条件地选择Woocommerce付款方式

时间:2016-06-14 14:33:37

标签: php jquery wordpress woocommerce

我想以编程方式在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应该以这种方式检查哪种付款方式?

1 个答案:

答案 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. 
    }

}