wp_handle_sideload()


WordPress関数wp_handle_sideload()は、アップロードされたファイルをサーバー上の適切な場所に移動し、ファイル情報を返します。

シンタックス

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

引数の説明:

  • $file (array) — アップロードされたファイルの情報(通常は$_FILESで提供される)
  • $overrides (array) — アップロード動作を上書きするオプション
  • $time (string) — ファイルがアップロードされた時間を指定(省略可能)

例1: 単純なファイルアップロード処理

サーバーにファイルを保存し、結果を取得します。

<?php
$file = $_FILES['upload_file'];
$result = wp_handle_sideload( $file, array( 'test_form' => false ) );
?>

例2: MIMEタイプを制限する

特定のファイルタイプのみを許可します。

<?php
$file = $_FILES['upload_file'];
$result = wp_handle_sideload( $file, array(
    'mimes' => array( 'jpg' => 'image/jpeg', 'png' => 'image/png' ),
    'test_form' => false,
) );
?>

例3: アップロード先のカスタマイズ

アップロード先を指定します。

<?php
$file = $_FILES['upload_file'];
$result = wp_handle_sideload( $file, array(
    'test_form' => false,
    'upload_error_handler' => null,
), '2024/12' );
?>

例4: エラーチェックを含む処理

アップロードエラーを確認します。

<?php
$file = $_FILES['upload_file'];
$result = wp_handle_sideload( $file, array( 'test_form' => false ) );
if ( isset( $result['error'] ) ) {
    echo $result['error'];
}
?>

例5: ファイルをメディアライブラリに追加

アップロードされたファイルをメディアライブラリに登録します。

<?php
$file = $_FILES['upload_file'];
$result = wp_handle_sideload( $file, array( 'test_form' => false ) );
if ( ! isset( $result['error'] ) ) {
    $attachment_id = wp_insert_attachment( array(
        'guid' => $result['url'],
        'post_mime_type' => $result['type'],
        'post_title' => basename( $result['file'] ),
        'post_content' => '',
        'post_status' => 'inherit'
    ), $result['file'] );
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    wp_update_attachment_metadata( $attachment_id, wp_generate_attachment_metadata( $attachment_id, $result['file'] ) );
}
?>

注意事項

  • wp_handle_sideload()はアップロードされたファイルの検証を行わないため、セキュリティリスクを軽減するためにsanitize_file_name()wp_check_filetype()を併用してください。

関連機能: