Gravity Forms - 访问短代码中定义的字段
Gravity Forms - Accessing field defined in shortcode
我正在使用 Gravity Forms 编写评级系统。每个 post 旁边是一个“投票”link,它会打开一个灯箱,里面有一个 Gravity Forms 简码。短代码填充两个隐藏字段 - Post 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 值是动态添加到表单中的,所以无法使用字段的默认值引用它,即使您查看源代码时它始终为空,输入值设置正确。
知道如何在 ac_populate_post_ratings()
函数中引用 Post ID 吗?
作为最后一搏,我联系了 Gravity Forms 支持,他们成功了。
字段 defaultValue
属性 将仅包含一个值,前提是您已在表单编辑器中配置该设置。 $form
.
不提供正在动态填充的值
gform_pre_render
过滤器从其 third param 中的简码传递动态人口值。
我需要更改这一行:
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' );
我正在使用 Gravity Forms 编写评级系统。每个 post 旁边是一个“投票”link,它会打开一个灯箱,里面有一个 Gravity Forms 简码。短代码填充两个隐藏字段 - Post 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 值是动态添加到表单中的,所以无法使用字段的默认值引用它,即使您查看源代码时它始终为空,输入值设置正确。
知道如何在 ac_populate_post_ratings()
函数中引用 Post ID 吗?
作为最后一搏,我联系了 Gravity Forms 支持,他们成功了。
字段 defaultValue
属性 将仅包含一个值,前提是您已在表单编辑器中配置该设置。 $form
.
gform_pre_render
过滤器从其 third param 中的简码传递动态人口值。
我需要更改这一行:
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' );