Загрузить изображение в мета-окне

im пытается реализовать загрузку через мета-окно без использования медиа-менеджера, но я хочу, чтобы он добавлялся в качестве прикрепленного сообщения.

im в настоящее время делает это, просто загружая и сохраняя на сервере.

<?php define("THUMB_DIR", WP_CONTENT_DIR . '/plugins/meta-upload/thumbs/'); define("THUMB_URL", WP_CONTENT_URL . '/plugins/meta-upload/thumbs/'); // this needs to be implemented function fileupload( $label ) { ?> <tr> <td class="left_label"> <?php echo $label; ?> </td> <td> <form name="uploadfile" id="uploadfile_form" method="POST" enctype="multipart/form-data" action="<?php echo $this->filepath.'#uploadfile'; ?>" accept-charset="utf-8" > <input type="file" name="uploadfiles[]" id="uploadfiles" size="35" class="uploadfiles" /> <input class="button-primary" type="submit" name="uploadfile" id="uploadfile_btn" value="Upload" /> </form> </td> </tr> <?php } //this needs to be added too function fileupload_process() { $uploadfiles = $_FILES['uploadfiles']; if (is_array($uploadfiles)) { foreach ($uploadfiles['name'] as $key => $value) { // look only for uploded files if ($uploadfiles['error'][$key] == 0) { $filetmp = $uploadfiles['tmp_name'][$key]; //clean filename and extract extension $filename = $uploadfiles['name'][$key]; // get file info // @fixme: wp checks the file extension.... $filetype = wp_check_filetype( basename( $filename ), null ); $filetitle = preg_replace('/\.[^.]+$/', '', basename( $filename ) ); $filename = $filetitle . '.' . $filetype['ext']; $upload_dir = wp_upload_dir(); /** * Check if the filename already exist in the directory and rename the * file if necessary */ $i = 0; while ( file_exists( $upload_dir['path'] .'/' . $filename ) ) { $filename = $filetitle . '_' . $i . '.' . $filetype['ext']; $i++; } $filedest = $upload_dir['path'] . '/' . $filename; /** * Check write permissions */ if ( !is_writeable( $upload_dir['path'] ) ) { $this->msg_e('Unable to write to directory %s. Is this directory writable by the server?'); return; } /** * Save temporary file to uploads dir */ if ( !@move_uploaded_file($filetmp, $filedest) ){ $this->msg_e("Error, the file $filetmp could not moved to : $filedest "); continue; } $attachment = array( 'post_mime_type' => $filetype['type'], 'post_title' => $filetitle, 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $filedest ); require_once( ABSPATH . "wp-admin" . '/includes/image.php' ); $attach_data = wp_generate_attachment_metadata( $attach_id, $filedest ); wp_update_attachment_metadata( $attach_id, $attach_data ); } } } } add_action('admin_menu', "post_upload_box_init"); add_action('save_post', 'post_save_thumb'); function post_upload_box_init() { add_meta_box("post-thumbnail-posting", "Dark Toob Thumbnail", "post_upload_thumbnail", "post", "advanced"); } function post_upload_thumbnail() { global $post; ?> <script type="text/javascript"> document.getElementById("post").setAttribute("enctype","multipart/form-data"); document.getElementById('post').setAttribute('encoding','multipart/form-data'); </script> <?php $thumb = get_post_meta($post->ID, 'custom_thumbnail',true); if ( $thumb ) { ?> <div style="float: left; margin-right: 10px;"> <img style="border: 1px solid #ccc; padding: 3px;" src="<?php echo THUMB_URL . $thumb; ?>" alt="Thumbnail preview" /> </div> <?php } else { ?> <div style="float: left; margin-right: 10px; width: 200px; height: 150px; line-height: 150px; border: solid 1px #ccc; text-align: center;">Thumbnail preview</div> <?php } ?> <div style="float: left;"> <p> <label for="thumb-url-upload"><?php _e("Upload via URL, or Select Image (Below)"); ?>:</label><br /> <input style="width: 300px; margin-top:5px;" id="thumb-url-upload" name="thumb-url-upload" type="text" /> </p> <p> <p><label for="thumbnail"><?php _e("Upload a thumbnail"); ?>:</label><br /> <input id="thumbnail" type="file" name="thumbnail" /> </p> <p><input id="thumb-delete" type="checkbox" name="thumb-delete"> <label for="thumb-delete"><?php _e("Delete thumbnail"); ?></label></p> <p style="margin:10px 0 0 0;"><input id="publish" class="button-primary" type="submit" value="<?php _e("Update Post"); ?>" accesskey="p" tabindex="5" name="save"/></p> </div> <div class="clear"></div> <?php } function post_save_thumb( $postID ) { global $wpdb; // Get the correct post ID if revision. if ( $wpdb->get_var("SELECT post_type FROM $wpdb->posts WHERE ID=$postID")=='revision') $postID = $wpdb->get_var("SELECT post_parent FROM $wpdb->posts WHERE ID=$postID"); if ( $_POST['thumb-delete'] ) { @unlink(THUMB_DIR . get_post_meta($postID, 'custom_thumbnail', true)); delete_post_meta($postID, 'custom_thumbnail'); } elseif ( $_POST['thumb-url-upload'] || !empty($_FILES['thumbnail']['tmp_name']) ) { if ( !empty($_FILES['thumbnail']['name']) ) preg_match("/(\.(?:jpg|jpeg|png|gif))$/i", $_FILES['thumbnail']['name'], $matches); else preg_match("/(\.(?:jpg|jpeg|png|gif))$/i", $_POST['thumb-url-upload'], $matches); $thumbFileName = $postID . strtolower($matches[0]); // Location of thumbnail on server. $loc = THUMB_DIR . $thumbFileName; $thumbUploaded = false; if ( $_POST['thumb-url-upload'] ) { // Try just using fopen to download the image. if( ini_get('allow_url_fopen') ) { copy($_POST['thumb-url-upload'], $loc); $thumbUploaded = true; } else // If fopen doesn't work, try cURL. if( function_exists('curl_init') ) { $ch = curl_init($_POST['thumb-url-upload']); $fp = fopen($loc, "wb"); $options = array(CURLOPT_FILE => $fp, CURLOPT_HEADER => 0, CURLOPT_FOLLOWLOCATION => 1, CURLOPT_TIMEOUT => 60); curl_setopt_array($ch, $options); curl_exec($ch); curl_close($ch); fclose($fp); $thumbUploaded = true; } } else // Attempt to move the uploaded thumbnail to the thumbnail directory. if ( !empty($_FILES['thumbnail']['tmp_name']) && move_uploaded_file($_FILES['thumbnail']['tmp_name'], $loc) ) $thumbUploaded = true; if ( $thumbUploaded ) { if ( !update_post_meta($postID, 'custom_thumbnail', $thumbFileName) ) add_post_meta($postID, 'custom_thumbnail', $thumbFileName); } } } 

Solutions Collecting From Web of "Загрузить изображение в мета-окне"

Вы можете взглянуть на плагин Стив Тейлорс и его подход здесь

Dominik «ocean90» Шиллинг – автор медиа-библиотеки (новая в 3.5), имеет репозиторий GitHub, где он демонстрирует некоторые демоверсии.

Короче говоря, вы, возможно, не сможете реализовать медиа-загрузчик стиля drag & drop в мета-окне со своими учебниками, но это должно быть возможно … так или иначе.