media_handle_upload()


WordPressのmedia_handle_upload()関数は、フォームやファイルアップロードインターフェースを通じてファイルを処理するために使用されます。

シンタックス

media_handle_upload( string $file_id, int $post_id = 0, array $post_data = array(), array $overrides = array() );

引数の説明:

  • $file_id (string) — アップロードされたファイルのフォームフィールド名。
  • $post_id (int) — 添付ファイルを関連付ける投稿のID。デフォルトは0
  • $post_data (array) — 添付ファイルに追加のメタデータを設定するための配列。
  • $overrides (array)wp_handle_upload()に渡される上書きオプション。

例1: 基本的なファイルアップロード

アップロードされたファイルを特定の投稿に関連付けます。

<?php
if ( ! empty( $_FILES['my_file'] ) ) {
    require_once( ABSPATH . 'wp-admin/includes/file.php' );
    $file_id = 'my_file';
    $post_id = 0;
    $attachment_id = media_handle_upload( $file_id, $post_id );
    if ( is_wp_error( $attachment_id ) ) {
        echo 'エラー: ' . $attachment_id->get_error_message();
    } else {
        echo '添付ファイルID: ' . $attachment_id;
    }
}
?>

例2: 投稿に画像を関連付ける

投稿IDを指定して画像を関連付けます。

<?php
$post_id = get_the_ID();
if ( ! empty( $_FILES['image_file'] ) ) {
    $attachment_id = media_handle_upload( 'image_file', $post_id );
    if ( ! is_wp_error( $attachment_id ) ) {
        update_post_meta( $post_id, '_thumbnail_id', $attachment_id );
    }
}
?>

例3: メタデータを追加したファイルアップロード

アップロード時にカスタムメタデータを設定します。

<?php
$post_data = array(
    'post_title' => 'カスタムタイトル',
    'post_content' => '説明文',
);
if ( ! empty( $_FILES['custom_file'] ) ) {
    $attachment_id = media_handle_upload( 'custom_file', 0, $post_data );
    if ( is_wp_error( $attachment_id ) ) {
        echo 'エラー: ' . $attachment_id->get_error_message();
    }
}
?>

例4: オプションを使用したファイルアップロード

アップロード時に特定のオプションを上書きします。

<?php
$overrides = array(
    'test_form' => false,
    'mimes' => array( 'jpg' => 'image/jpeg', 'png' => 'image/png' ),
);
if ( ! empty( $_FILES['my_image'] ) ) {
    $attachment_id = media_handle_upload( 'my_image', 0, array(), $overrides );
    if ( is_wp_error( $attachment_id ) ) {
        echo 'エラー: ' . $attachment_id->get_error_message();
    }
}
?>

例5: エラーハンドリングの例

ファイルアップロード中のエラーを処理します。

<?php
if ( ! empty( $_FILES['upload_file'] ) ) {
    $attachment_id = media_handle_upload( 'upload_file', 0 );
    if ( is_wp_error( $attachment_id ) ) {
        echo 'アップロード失敗: ' . $attachment_id->get_error_message();
    } else {
        echo 'アップロード成功。添付ID: ' . $attachment_id;
    }
}
?>

注意事項:

  • $_FILESは適切にサニタイズする必要があります。
  • media_handle_upload()を使用する前にwp-admin/includes/file.phpをインクルードする必要があります。

関連機能: