Мне нужна помощь! 🙂
То, что я пытаюсь сделать, это позволить пользователю создать сообщение с лицевой стороны. В окне предварительного просмотра, как будет выглядеть сообщение при публикации. Это я уже сделал. Теперь я пытаюсь разрешить пользователю загружать изображение непосредственно в медиа-библиотеку. Эта загрузка должна произойти, как только пользователь выбрал файл с последующим кодом:
<form method="post" action="#" enctype="multipart/form-data" > <input type="file" name="featured_image"> </form>
Я не хочу загрузки страницы, есть ли способ получить файл без использования кнопки отправки? Также как я могу обрабатывать фактическую загрузку файла, мои навыки Google нашли эту функцию:
function insert_attachment($file_handler,$post_id,$setthumb='false') { // check to make sure its a successful upload if ($_FILES[$file_handler]['error'] !== UPLOAD_ERR_OK) __return_false(); require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); $attach_id = media_handle_upload( $file_handler, $post_id ); if ($setthumb) update_post_meta($post_id,'_thumbnail_id',$attach_id); return $attach_id; }
Но эта функция перехватывает загрузку в сообщение, я просто хочу, чтобы она сразу попала в библиотеку, не будучи подключенной к сообщению. Также я предполагаю, что $ file_handler – это имя формы? Я также предполагаю, что $ _FILES не существует, если пользователь не нажал кнопку отправки.
Я ушел отсюда, разговаривая из-за моей задницы. Таким образом, любая помощь будет назначена. Доступны любые WP-гуру? : D
У меня такая же проблема. Документация WordPress помогает: http://codex.wordpress.org/Function_Reference/wp_handle_upload http://codex.wordpress.org/Function_Reference/wp_insert_attachment
UPDATE: $ key – это имя типа = "файл"
Я просто добавил значение guid, потому что он, кажется, не добавлен (и, возможно, есть более эффективные способы, а затем admin.php:
require_once(ABSPATH . 'wp-admin/includes/admin.php'); // step one upload file to server $file_return = wp_handle_upload($_FILES[$key], array('test_form' => false)); if(isset($file_return['error']) || isset($file_return['upload_error_handler'])) { echo 'not working again :('; } else { /** * See http://codex.wordpress.org/Function_Reference/wp_insert_attachment * */ $filename = $file_return['file']; $attachment = array( 'post_mime_type' => $file_return['type'], 'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)), 'post_content' => '', 'post_status' => 'inherit', 'guid' => $file_return['url'] ); $attach_id = wp_insert_attachment( $attachment, $file_return['url'] ); // you must first include the image.php file // for the function wp_generate_attachment_metadata() to work require_once(ABSPATH . 'wp-admin/includes/image.php'); $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data ); } }
Хорошо, я продвигаюсь вперед. Я использую этот плагин jquery для загрузки изображений -> http://lagoscript.org/jquery/upload
Это очень легкий вес и отлично работает. Загружает изображение на компьютер без обновления. Он сохраняет файл во временном каталоге на моем сервере, то, что я планирую сделать, как-то вставляет это изображение в медиа-библиотеку (а затем удаляет ее из временной папки), но это кажется сложнее, чем нужно.
Есть ли способ добавить изображение в медиа-библиотеку с php-кодом, используя только URL-адрес изображения? Я не могу найти его, но, поскольку WP имеет эту функцию в админ-области, уже должен быть способ.
Самый простой способ – просто создать настраиваемое поле, в котором хранится изображение для этого сообщения, но я действительно хочу иметь возможность использовать миниатюрные функции WPs, а не только для циклов, но для изменения размера и т. Д.
Любые указатели?
Я использую этот код, работает нормально
Javascript
<script src="<?php bloginfo( 'template_url' ); ?>/image_file/jquery.ui.widget.js"></script> <script src="<?php bloginfo( 'template_url' ); ?>/image_file/jquery.iframe-transport.js"></script> <script src="<?php bloginfo( 'template_url' ); ?>/image_file/jquery.fileupload.js"></script> <script src="<?php bloginfo( 'template_url' ); ?>/image_file/jquery.fileupload-validate.js"></script> <script> $(function () { 'use strict'; var url = '<?php bloginfo( 'template_url' ); ?>/upload.php'; $('#fileupload').fileupload({ add: function(e, data) { var uploadErrors = []; if(data.originalFiles[0]['size'] > 2000000) { uploadErrors.push('Filesize is too big'); } if(uploadErrors.length > 0) { $("#errormessage").show(); $("#errormessage").html(uploadErrors.join("\n")); } else { data.submit(); $("#errormessage").hide(); } }, url: url, dataType: 'json', done: function (e, data) { if(data._response.result.response=="errortype"){ $("#errormessage").show(); $("#errormessage").html("Not an accepted file type "); $("#progress").hide(); } else { $("#progress").show(); var url=data._response.result.upload_info.url; if(url=='') { } $("#file_url").val(url); } }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .progress-bar').html( progress + '%'); $('#progress .progress-bar').css( 'width', progress + '%' ); } }).prop('disabled', !$.support.fileInput) .parent().addClass($.support.fileInput ? undefined : 'disabled'); }); </script>
HTML
<
span class="input__label-content input__label-content--akira" >UPLOAD A PHOTO OF YOUR RECEIPT**</span> <span id="fileupload"> <input type="file" name="upload_file" multiple></span> </span> <input type="hidden" name="file_url" value="" id="file_url" /> upload.php <?php require("../../../wp-load.php"); global $wpdb; if ( ! function_exists( 'wp_handle_upload' ) ) require_once( ABSPATH . 'wp-admin/includes/file.php' ); $uploadedfiles = $_FILES['upload_file']; if(strtolower($uploadedfiles['type'])=='image/jpeg' || strtolower($uploadedfiles['type'])=='image/gif' || strtolower($uploadedfiles['type'])=='image/png' || strtolower($uploadedfiles['type'])=='image/pjpeg' || strtolower($uploadedfiles['type'])=='image/x-png'){ // $upload_overrides = array( 'test_form' => false ); $results=array(); if ($uploadedfiles['name']) { $file = array( 'name' => $uploadedfiles['name'], 'type' => $uploadedfiles['type'], 'tmp_name' => $uploadedfiles['tmp_name'], 'error' => $uploadedfiles['error'], 'size' => $uploadedfiles['size'] ); $movefile = wp_handle_upload( $file, $upload_overrides ); if ( $movefile ) { $data=array('result'=>'success','upload_info'=>$movefile); $filename = $movefile['upload_file']['file']; $filetype = wp_check_filetype( basename( $filename ), null ); $wp_upload_dir = wp_upload_dir(); $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ), 'post_mime_type' => $filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $filename, $id ); require_once( ABSPATH . 'wp-admin/includes/image.php' ); $attach_data = wp_generate_attachment_metadata( $attach_id, $filename ); wp_update_attachment_metadata( $attach_id, $attach_data ); } else { $data=array('result'=>'error','upload_info'=>null); } $data['request']=$_FILES; } } else { $data=array('response'=>'errortype','upload_info'=>null); } echo json_encode($data); ?>