WordPressでフロントからプラグイン無しで複数ファイルアップロードする方法  ログイン済みユーザー用

複数ファイルのフロントからのアップロード、かつ
プラグインは使わない ログイン済みユーザー用
Contact form 7などフォーム機能プラグインを使用せずに、固定ページにてファイルアップロードを実装したいという要望、あると思います。
私のケースは、フォームからのメール送信で画像ファイルを複数添付する場合、メールに添付するよりWordpressに保存し、画像のURLをメールに記入する方がシンプルでよいのではないか?というので方法を調べました。

検索すると世界で下記と同じようなコードがたくさん見受けられました。
動作したもので私も利用しているものを紹介します。

実装手順

1 フォームを配置するHTML作成

enctype=”multipart/form-data”
type=file のnameは [] で

2 functions.php へ、ファイルを保存する関数を設置

関数の返り値は、media_handle_upload()の返り値、すなわち (整数|WP_Error) 添付ファイルの ID。アップロードに失敗すると WP_Error。

3 1のフォームのpost先のphpファイルに2の関数を使用する処理を書く

$uploaded_file = kv_handle_attachment( $file, $page_id );

の$page_idでPOSTに紐づける仕組みです。$page_idはなくても動きます。

4 アップロードファイルは、upload/ に保存されます。

下記のコードを実行すると、 $page_id で渡したページの添付として、メディアファイルのURLをechoしています。

※ログイン済みユーザー用です

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール