WordpressでGravity Formsを使用して、クライアントの送信フォームを作成しています。 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フォームのプレビューで入力タイプが正しく表示されていますが、フォームを投稿するときにカスタムフィールドに値が関連付けられていません。 (それに対応する$ _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;
}
?>
ありがとうございます。