微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何更改使用 PHP 作为 gform_pre_submission 的一部分在重力表单单选按钮字段中选择的选项

如何解决如何更改使用 PHP 作为 gform_pre_submission 的一部分在重力表单单选按钮字段中选择的选项

我的 PHP 技能不是很好,但我通过代码示例学习,因为我不熟悉语法,但在这种情况下我找不到有效的代码示例。

我想在基于另一个字段的值的 gform_pre_submission add_action 期间设置产品选项单选按钮字段的选定值。我已经尝试过这样的事情(还有其他函数和变量是提前在别处定义的,这是一个抽象的)但是这种方法对我不起作用,我想知道我错过了什么:

add_action( 'gform_pre_submission_FORMIDhere','select_radio_button' );

function select_radio_button( $form) {

  foreach( $form['fields'] as &$field ) {
    
    if( 53 === $field->id ) {
     
      foreach( $field->choices as &$choice ) {  
      echo($aag_kg_nummorn.' / /'.$choice['value']);
        if( $aag_kg_nummorn == $choice['value'] ) {
            echo('Bingo!');
          $choice['isSelected'] = true;  // <- THIS line doesn't work for me
        }
      } 
    } 
  } 
  return $form;
}

感谢您提前帮助我。

解决方法

在回答之前我想指出几点

  1. 您应该修改 $_POST 而不是字段,我看您已经想通了。
  2. gform_pre_submission 是一个操作,而不是一个过滤器,因此在此处返回表单不会执行任何操作。

答案

假设您有一个 ID 为 2 的产品选项字段,它有 3 个选项

First Option|1

Second Option|2

Third Option|3

然后代码看起来像

add_action( 'gform_pre_submission_FORMIDhere','select_radio_button' );

function select_radio_button( $form ) {

   $_POST['input_2'] = 'New Option|6';

}

我假设您将其与使用其中一种重力形式支付附加组件(如 stripe 或 Paypal)的支付表单一起使用,其中一些附加组件(如 PayPal Checkout)使用 JS 将总价值发送到支付网关之前此操作被触发,因此发送到支付网关的总价值将是用户已经选择的选项的价值,但条目上的总价值将使用您在代码中设置的值。

如果您还需要关于如何从 JS 端覆盖它的帮助,以便您可以将覆盖的值发送到支付网关,我可以将其写在单独的答案中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。