wordpress - Gravity Forms - 访问在简码中定义的字段
问题描述
我正在使用 Gravity Forms 编写评分系统。每个帖子旁边都有一个“投票”链接,它会打开一个灯箱,里面有重力形式的简码。简码填充两个隐藏字段 - 帖子 ID 和用户 ID:
[gravityform id="2" field_values="gf_rating_post=123&gf_rating_user=456" title="false" description="false" ajax="true" tabindex="49"]
表单内部是下拉菜单,用于对各种元素进行评分,从 1 到 10。我正在尝试编写代码以使用下拉列表中先前选择的值插入 SELECTED,但我需要能够引用 Post ID 才能检索先前选择的值。
add_filter('gform_pre_render_2', 'ac_populate_post_ratings');
add_filter('gform_pre_validation_2', 'ac_populate_post_ratings');
add_filter('gform_pre_submission_filter_2', 'ac_populate_post_ratings');
add_filter('gform_admin_pre_render_2', 'ac_populate_post_ratings');
function ac_populate_post_ratings($form) {
foreach ( $form['fields'] as &$field ) {
if ( $field->type != "select" || strpos( $field->cssClass, 'populate-posts' ) ) {
continue;
}
$choices = $field->choices;
foreach ( $choices as $choice ) {
// echo "defaultValue: " . $field->defaultValue . "<br />";
$newchoices[] = array( 'text' => $choice['text'], 'value' => $choice['value'] );
}
$field->choices = $newchoices;
}
return $form;
}
似乎因为 Post ID 值是动态添加到表单中的,所以无法使用字段的 defaultValue 来引用它,即使您查看源代码时输入值设置正确,它也始终为空。
有什么想法可以在ac_populate_post_ratings()
函数中引用该 Post ID 吗?
解决方案
作为最后的努力,我联系了 Gravity Forms 支持,他们收到了货物。
只有在表单编辑器中配置了该设置,该字段defaultValue
属性才会包含一个值。动态填充的值不能从$form
.
过滤器在其第三个参数gform_pre_render
中传递来自短代码的动态人口值。
我需要改变这一行:
add_filter('gform_pre_render_2', 'ac_populate_post_ratings');`
对此:
add_filter('gform_pre_render_2', 'ac_populate_post_ratings', 10, 3 );`
而这一行:
function ac_populate_post_ratings($form) {
对此:
function ac_populate_post_ratings( $form, $ajax = false, $field_values = array() ) {
现在我可以像这样访问这些值:
$gf_rating_post = rgar( $field_values, 'gf_rating_post' );
推荐阅读
- firebase - Firebase RTDB 规则阻止“设置”但仍允许“更新”
- c - 哪种方式在微控制器中初始化寄存器更快?
- java - tophits JAVA API的Elasticsearch子聚合不起作用
- freemarker - 在 FreeMarker 中将一小时添加到当前时间戳
- matlab - 没有箭杆的箭袋图
- firebase - 在通过 Web 连接的用户上与 Firestore 同步数据
- javascript - 谷歌地图的 javascript 版本的新版本是否适用于 JavaFx-WebView
- mysql - nodejs 连接 MYSQL 时出现问题,MYSQL 由 mongodb 通过 JWT 身份验证连接
- android - 通知文本未在 Android P 中本地化
- javascript - 在不丢失缩放控制的情况下更新 amMap 中的图像 - AmCharts v4