Гравитационные формы получают поля
Зарегистрированный пользователь заполняет форму несколько раз. Из его записей я пытаюсь получить все его входные данные для определенного поля и поместить их в массив PHP.
Для простоты предположим, что форма имеет идентификатор 10 с первым полем с именем SomeField, и пользователь вошел в систему (и все еще вошел в систему) для всех записей.
Вот моя лучшая попытка создать массив всех записей SomeField от пользователя:
get_currentuserinfo();
$searchCriteria = array(
array(
'key' => 'created_by',
'value' => $current_user->user_login
),
array(
'key' => '1',
'value' => 'SomeField'
),
);
$form = GFAPI::get_entries( 10, $searchCriteria );
echo print_r($form);
К сожалению, этот print_r отображает пустой массив. Я считаю, что мои критерии поиска как-то неверны.
2 ответа
Я обнаружил, что проще опустить второй параметр ($searchCriteria) и просто использовать, например, $form[0]['1'], который будет отображать первое поле первой записи указанной формы.
Я нашел с user23058230 отличное решение во втором ответе, я всегда получал последнюю форму, которая работала хорошо для новых регистраций, но не позже.
Предполагая, что здесь идентификатор формы номер 1, вы можете искать его с помощью for
цикл с использованием entry_id
который доступен в массиве логина пользователя как$current_user->entry_id
Никакой поисковый запрос не требуется, кроме формы, которую вы хотите вернуть - в этом случае форма #1.
Вы можете искать другие элементы, используя ключи, которые вы видите из дампа массива.
Отличное решение, которое с добавлением этого кода решило мою проблему.
$form = GFAPI::get_entries( 1, '');
$what_i_want = 0;
for( $i = 0; $i < count($form); $i++ ){
if( $form[$i]['id'] == $current_user->entry_id ){
// the item I want
$what_i_want = $form[$i]['22'];
//echo " I " . $form[$i]['id'] . " F " . $form[$i]['22'] . " i " . $i . " T " . $what_i_want . '<br />';
break;
}
}