<?php
function upload_image_to_media_library($file) {
// 画像をサーバーに保存する
// ファイルサイズは3MB=3*1024*1024バイトいかに設定
// 接続不良などで保存できなかった場合のエラーチェック
if( ! function_exists('wp_handle_upload') ) {
require_once( ABSPATH . 'wp-admin/includes/file.php' );
}
//$max_fie_size = 3*1024*1024;
//if($file['size'] > $max_file_size) {
// echo 'ファイルサイズが大きすぎます。' . $file['size'];
// return false;
//}
$uploaded_file = wp_handle_upload( $file, array('test_form' => false) );
if(isset($uploaded_file['error'])) {
echo 'HANDLE UPLOADエラー: ' . $upoloaded_file['error'];
return false;
}
if ( isset( $uploaded_file['file'] ) ) {
// 許可された画像タイプか確認
$file_path = $uploaded_file['file'];
$file_url = $uploaded_file['url'];
$wp_file_type = wp_check_filetype( $file_path, null );
$allowed_types = array('image/jpeg', 'image/png', 'image/gif', 'image/webp');
if(!in_array($wp_file_type['type'], $allowed_types)) {
echo '許可されていないファイルタイプです';
return false;
}
// WordPressのデータベースに添付ファイルの情報を登録
// $attach_idは画像の投稿ID
$attachment = array(
'guid' => $file_url,
'post_mime_type' => $wp_file_type['type'],
'post_title' => basename( $file_path ),
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file_path );
// 添付ファイルのメタデータを生成
require_once( ABSPATH . 'wp-admin/includes/image.php');
$attach_data = wp_generate_attachment_metadata( $attach_id, $file_path );
wp_update_attachment_metadata( $attach_id, $attach_data );
// 画像のURLを返す
return $file_url;
} else {
return false;
}
}
?>
<!-- 画像を送信するためにはenctype='multipart/form-dataが必要' -->
<form method='post' action='' enctype='multipart/form-data'>
<label for='image_upload'>画像を選択:</label>
<input type='file' name='file' id='image_upload' required>
<input type='submit' name='submit_image' value='アップロード'>
</form>
<?php
// $_FILES['file']は、フォームから送信されたファイルデータを扱うグローバル変数であり、fileはname='file'を参照している
if(isset($_POST['submit_image']) && isset($_FILES['file']) && !empty($_FILES['file']['name'])) {
$image_url = upload_image_to_media_library($_FILES['file']);
if($image_url) {
echo 'アップロード成功。画像URL:' . $image_url . '<br>';
echo '<img src="' . esc_url($image_url) . '" style="width:500px;">';
} else {
echo 'アップロード失敗';
}
}
?>