【问题标题】:Select Woocommerce payment method conditionally in PHP在 PHP 中有条件地选择 Woocommerce 付款方式
【发布时间】:2016-10-15 08:41:38
【问题描述】:

我想根据使用 php(不是 jquery)的条件,在 woocommerce 结帐页面中以编程方式设置默认付款方式(选中无线电)。

假设我有两种付款方式:

'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 应该以这种方式检查哪种付款方式?

【问题讨论】:

    标签: php jquery wordpress woocommerce


    【解决方案1】:

    您可以看到woocommerce模板结构结帐文件夹有文件payment-method.php。有支付方式 $gateway 对象 具有属性 $gateway->chosen 以访问真正的默认检查支付网关。

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

    }

    【讨论】:

    • 如前所述,我不想删除任何网关。
    • 哦!您想有条件地设置默认检查支付网关。
    • 编辑新答案请看
    • 我添加了 global $woocommerce;$available_gateways = $woocommerce->payment_gateways->get_available_payment_gateways(); 以使您的代码正常工作。
    • 检测用户通过 PHP 更改付款方式的 woocommerce 钩子是什么?
    猜你喜欢
    • 2021-01-27
    • 2018-12-26
    • 2018-10-28
    • 2015-04-01
    • 2018-08-30
    • 2018-06-05
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多