Гравитационные формы: созданное пользователем поле не публикует данные
Я использую Gravity Forms в Wordpress, чтобы создать форму представления для клиента. У Gravity Forms есть большинство требований, которые мне нужны для этой задачи, но мне нужно встроить некоторые настраиваемые поля в сам плагин (который должен быть расширяемым).
Таким образом, я создаю тип поля, который загружает видеофайл на Youtube после отправки. Я планирую использовать тип ввода загрузки файла, и после отправки захватить данные файла (или URL / путь) и загрузить его на Youtube. Это часть клиентского проекта, который я должен построить за три недели.
Я создал пользовательское поле с помощью следующих хуков: (извините за ужасное форматирование; ссылки и код плохо сочетаются)
add_action("
gform_field_input
", array('GFYoutubeUpload', 'add_gf_fieldtype'), 10, 5)
add_filter("
gform_editor_js_set_default_values
", array('GFYoutubeUpload', 'add_gf_defaults'));
add_action("
gform_editor_js
", array('GFYoutubeUpload', 'add_gf_formeditor'));
add_filter("
gform_field_type_title
", array('GFYoutubeUpload', 'add_gf_title'));
add_filter("
gform_add_field_buttons
", array('GFYoutubeUpload', 'add_gf_button'));
(У меня также есть обработчик pre_submission, который я начал писать, который отправит входные данные другому плагину.)
Я создал тип ввода File и считаю, что у меня правильное соглашение об именах. Ниже я разместил свою функцию для проверки.) Тип ввода корректно отображается на странице администратора Wordpress и в предварительном просмотре формы Gravity Forms, но когда я публикую форму, мое настраиваемое поле не имеет значения, связанного с ним. (В $_POST тоже нет ничего соответствующего.)
Глядя на код ниже, кто-нибудь может сказать мне, где я ошибся при создании этого ввода? Есть ли другой хук, о котором я не знаю, который мне нужно использовать для обработки данных, которые я добавил в форму?
<?php
/* Register the cusitom field type with Gravity Forms. */
public static function add_gf_fieldtype($input, $field, $value, $lead_id, $form_id) {
if ($field["type"] == "youtube") {
$input_name = $form_id .'_'. $field['id'];
$css = isset($field['cssClass']) ? $field['cssClass'] : '';
return sprintf("<div class='ginput_container'><input name='input_%s' id='input_%s_%s' class='%s' value='' type='file' /></div>", $field["id"], $form_id, $field["id"], $field["type"]. ' ' .esc_attr($css). ' ' .$field['size']);
}
return $input;
}
?>
Спасибо.
1 ответ
Ответ был на самом деле прост - это не были Гравитационные Формы; это был базовый PHP. Я использовал $_POST
суперглобальный вместо $_FILES
где данные фактически жили. Надеюсь, это поможет кому-то еще, кто сталкивается с этой проблемой.