有人可以指出我如何从包含列表字段的提交表单中提取值吗?
我尝试使用Gravity Forms创建前端发布表单,然后将提交的值分配给使用高级自定义字段创建的自定义字段。
对于普通字段,您可以使用以下内容执行此操作:
add_action("gform_after_submission_1", "acf_submission", 10, 2);
function acf_submission($entry, $form)
{
$post_id = $entry["post_id"];
update_field('field_###', $entry['#'], $post_id );
update_field('field_###', $entry['#'], $post_id );
update_field('field_###', $entry['#'], $post_id );
}
其中field _ ###是ACF自定义字段键,条目['#']是Gravity Forms字段ID,$ post_id是您要更新/存储值的帖子的ID到。
使用条目['#']可以很好地处理普通字段(文本,段落等),但列表(转发器)字段的存储方式略有不同。在DB中,值看起来像这样(对于包含3个字段(列)的列表字段,以及单击添加按钮以添加列表字段的其他实例的人:
a:2:{i:0;a:3:{s:4:"Column 1 Name";s:7:"value input";s:6:"Column 2 Name";s:34:"value input";s:11:"Column 3 Name";s:24:"value input";}i:1;a:3:{s:4:"Column 1 Name";s:11:"value input";s:6:"Column 2 Name";s:19:"value input";s:11:"Column 3 Name";s:22:"value input";}}
我无法弄清楚如何提取这些值并将它们分配给ACF字段。我尝试输入['#。#'],就像对地址这样的字段一样,但是没有用。
答案 0 :(得分:1)
这是一个序列化数组,因此您可以使用php函数unserialize来提取值。
$array_values = unserialize($entry['#']);
print_r($array_values); //see what your values are.
现在您已拥有自己的值,可以在新的$ array_values数组中访问它们。 Getting one value out of a serialized array in PHP
答案 1 :(得分:0)
可以从Gravity Form的文档中找到相关信息 - GF_Field_List
$list_values = unserialize( rgar( $entry, '3' ) );
// You will get an array like below
$list_values = array(
array(
'Column 1' => 'one',
'Column 2' => 'two',
'Column 3' => 'three',
),
array(
'Column 1' => 'i',
'Column 2' => 'ii',
'Column 3' => 'iii',
),
array(
'Column 1' => '1',
'Column 2' => '2',
'Column 3' => '3',
),
);