クライアントの送信フォームを作成するために、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;
}
?>
ありがとうございました。