如何解决如何更改使用 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;
}
感谢您提前帮助我。
解决方法
在回答之前我想指出几点
- 您应该修改
$_POST
而不是字段,我看您已经想通了。 -
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 举报,一经查实,本站将立刻删除。