Wordpress Gravity Forms получает значения списка

Может ли кто-нибудь указать мне, как извлекать значения из представленных форм, содержащих поля списка?

Я пытаюсь создать интерфейсную форму публикации с помощью 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, а $ post_id - это идентификатор сообщения, для которого вы хотите обновить / сохранить значения.

Использование entry ['#'] отлично работает с обычными полями (текст, абзац и т. Д.), Но поля списка (повторителя) хранятся немного по-другому. В БД значение выглядит следующим образом (для поля списка, которое имеет 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. Я попробовал ввести ['#. #'], Как вы это делаете для таких полей, как адрес, но это не сработало.


person DjGMory    schedule 17.06.2014    source источник


Ответы (2)


Это сериализованный массив, поэтому вы можете использовать функцию unserialize php для извлечения значений.

$array_values = unserialize($entry['#']);  
print_r($array_values); //see what your values are.

Теперь, когда у вас есть значения, вы можете получить к ним доступ в новом массиве $ array_values. Получение одного значения из сериализованного массива в PHP

person eleclair    schedule 12.01.2015

Информацию можно найти в документации 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',
  ),
);
person Ken Toh    schedule 15.09.2016