フロントエンドから画像をアップロードする方法

formのenctypeを multipart/form-data にする。
例えば、postに画像をattachment(アイキャッチ)として登録するには

<form method="post" action="#" enctype="multipart/form-data" >
<input type="file" name="thumbnail" />
<input type="hidden" name="post_id" value="1" />
<input type="submit" />
</form>

フォームの投稿先では、

$post_id = $_POST['post_id'];
if($_FILES['thumbnail']['size'] > 0)
{
$attachment_id = insert_attachment('thumbnail', $post_id);
}

とし、insert_attachment()をfunctions.php等にて定義しておく。

function insert_attachment($file_handler,$post_id,$setthumb='false') 
{
// check to make sure its a successful upload
if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false();
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$attach_id = media_handle_upload( $file_handler, $post_id );
if ($setthumb)
update_post_meta($post_id,'_thumbnail_id',$attach_id);
return $attach_id;
}

画像の処理(サムネイルを作る、など)は、全部WordPressにおまかせする。

参照:
http://goldenapplesdesign.com/2010/07/03/front-end-file-uploads-in-wordpress/

One Comment

コメントを残す

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