質問: media_handle_upload('async-upload', '');
回答: この関数の最初の行を見てください。function media_handle_upload( $file_id, $post_id, $post_data = array(), $overrides = array( 'test_form' => false ) ) { $time = current_time('mysql'); if ( $post = get_post($post_id) ) { if ( substr( $post->post_date, 0, 4 ) > 0 ) $time = $post->post_date; } $name = $_files[$file_id]['name']; $file = wp_handle_upload($_files[$file_id], $overrides, $time); 時間は投稿日から取られます。 media_handle_upload()を迂回してwp_handle_upload()を直接使うこともできます。更新完全に機能するスタンドアロンの例を書く時間がないのですが、これは私のテーマオプションクラスからの抜粋です。アップロードを処理し、さまざまな画像サイズと添付ファイルidを生成します。これは一般的な保存機能によって呼び出され、複数のアップロードされたファイルを1回のrushで処理します。/** * saves uploaded files in media library and the corresponding id in option field. * * @return void */ protected function handle_uploads() { if ( ! isset ( $_files ) or empty ( $_files ) ) { return; } foreach ( $_files as $file_key => $file_arr ) { // some bogus upload. if ( ! isset ( $this->fields[$file_key] ) or empty ( $file_arr['type'] ) ) { continue; } if ( ! $this->is_allowed_mime( $file_key, $file_arr ) ) { set_theme_mod( $file_key . '_error', 'wrong mime type' ); continue; } // the file is allowed, no error until now and the type is correct. $uploaded_file = wp_handle_upload( $file_arr , array( 'test_form' => false ) ); // error if ( isset ( $uploaded_file['error'] ) ) { set_theme_mod( $file_key . '_error', $uploaded_file['error'] ); continue; } // add the file to the media library // set up options array to add this file as an attachment $attachment = array( 'post_mime_type' => $uploaded_file['type'] , 'post_title' => $this->get_media_name( $file_key, $uploaded_file['file'] ) ); // adds the file to the media library and generates the thumbnails. $attach_id = wp_insert_attachment( $attachment , $uploaded_file['file'] ); $this->create_upload_meta( $attach_id, $uploaded_file['file'] ); // update the theme mod. set_theme_mod( $file_key, $attach_id ); remove_theme_mod( $file_key . '_error' ); } } /** * adds meta data to the uploaded file * * @param int $attach_id * @param string $file * @return void */ protected function create_upload_meta( $attach_id, $file ) { // create meta data from exif fields. require_once abspath . 'wp-admin/includes/image.php'; $attach_data = wp_generate_attachment_metadata( $attach_id , $file ); wp_update_attachment_metadata($attach_id, $attach_data); } いくつかのメモ: is_allowed_mime()は私のコントローラで設定されている$fieldsで設定されているmimeタイプをチェックします。たとえば、ファビコンのmimeタイプはimage/x-iconまたはimage/vnd.microsoft.iconです。 get_media_name()は添付ファイルに事前定義された名前を使うかもしれません(例:ロゴ)。 あなたの関数ではおそらく$attach_idを返してそれをpost meta fieldかそれに似たものの中で使いたいでしょう。