0

クライアントの送信フォームを作成するために、Wordpress で Gravity Forms を使用しています。Gravity Forms には、このタスクに必要なほとんどの要件がありますが、プラグイン自体 (拡張可能であるはずです) にいくつかのカスタム フィールドを作成する必要があります。

そのため、投稿の送信時にビデオ ファイルを Youtube にアップロードするフィールド タイプを作成しています。ファイル アップロード入力タイプを使用する予定で、送信時にファイル データ (または URL/パス名) を取得して Youtube にアップロードします。これは、3 週間で構築しなければならないクライアント プロジェクトの一部です。

次のフックを使用してカスタム フィールドを作成しました: (ひどい書式で申し訳ありません。リンクとコードがうまく混ざりません)。

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ハンドラーもあります。)

ファイル入力タイプを作成しましたが、正しい命名規則を使用していると思います。入力タイプは 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;  
     }
?>

ありがとうございました。

4

1 に答える 1

0

答えは実に単純でした。それは Gravity Forms ではありませんでした。それは基本的なPHPでした。データが実際に存在する の$_POST代わりにスーパーグローバルを使用していました。$_FILESうまくいけば、これはこの問題に遭遇した他の誰かを助けるでしょう.

于 2012-04-18T22:33:05.867 に答える