wp_handle_upload()


WordPress関数wp_handle_upload()は、ファイルをアップロードして処理するために使用されます。この関数は、アップロードされたファイルを指定されたディレクトリに保存し、ファイル情報を返します。

構文

wp_handle_upload( array $file, array $overrides = array(), string $time = null );

引数の説明:

  • $file (array) — アップロードされたファイル情報を含む配列(通常は$_FILES['file']など)。
  • $overrides (array) — オプションの設定を指定する連想配列。以下のキーを含むことができます:
    • 'test_form' — フォーム検証をスキップするかどうか(trueまたはfalse)。
    • 'test_size' — ファイルサイズ検証をスキップするかどうか。
    • 'mimes' — 許可されるMIMEタイプの配列。
  • $time (string) — 保存ディレクトリのタイムスタンプを指定。

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

<?php
if ( isset( $_FILES['upload'] ) ) {
    $uploaded_file = wp_handle_upload( $_FILES['upload'], array( 'test_form' => false ) );
    if ( isset( $uploaded_file['file'] ) ) {
        echo 'ファイルが正常にアップロードされました: ' . $uploaded_file['url'];
    } else {
        echo 'エラー: ' . $uploaded_file['error'];
    }
}
?>

例2: MIMEタイプを制限するアップロード

<?php
if ( isset( $_FILES['upload'] ) ) {
    $uploaded_file = wp_handle_upload(
        $_FILES['upload'],
        array(
            'test_form' => false,
            'mimes' => array( 'jpg' => 'image/jpeg', 'png' => 'image/png' )
        )
    );
    if ( isset( $uploaded_file['file'] ) ) {
        echo 'アップロード成功: ' . $uploaded_file['url'];
    } else {
        echo 'エラー: ' . $uploaded_file['error'];
    }
}
?>

例3: ファイルサイズの検証をスキップ

<?php
if ( isset( $_FILES['upload'] ) ) {
    $uploaded_file = wp_handle_upload(
        $_FILES['upload'],
        array(
            'test_form' => false,
            'test_size' => false
        )
    );
    if ( isset( $uploaded_file['file'] ) ) {
        echo 'アップロード成功: ' . $uploaded_file['url'];
    } else {
        echo 'エラー: ' . $uploaded_file['error'];
    }
}
?>

例4: タイムスタンプを指定してアップロード

<?php
if ( isset( $_FILES['upload'] ) ) {
    $time = date( 'Y/m' );
    $uploaded_file = wp_handle_upload( $_FILES['upload'], array( 'test_form' => false ), $time );
    if ( isset( $uploaded_file['file'] ) ) {
        echo 'アップロード成功: ' . $uploaded_file['url'];
    } else {
        echo 'エラー: ' . $uploaded_file['error'];
    }
}
?>

例5: エラー処理を含むアップロード

<?php
if ( isset( $_FILES['upload'] ) ) {
    $uploaded_file = wp_handle_upload( $_FILES['upload'], array( 'test_form' => false ) );
    if ( isset( $uploaded_file['file'] ) ) {
        echo 'アップロード成功: ' . $uploaded_file['url'];
    } else {
        echo 'エラーが発生しました: ' . $uploaded_file['error'];
    }
}
?>

注意事項

  • セキュリティ上の理由から、'test_form'falseに設定する場合は慎重に検討してください。
  • アップロードディレクトリに適切な書き込み権限が設定されていることを確認してください。

関連機能: