Intereting Posts
Как предотвратить конфликты зависимости Composer между WP плагинами? Разве сообщения не отображаются очень неэффективно? Как массивные действия обрабатываются в классах таблиц пользовательских списков? Почему постоянная ссылка типа post никогда не попадает в index.php Жестко закодированные пути в моем плагине Глобальные переменные WordPress? Разделить цикл wordpress на несколько макетов Расширенные пользовательские поля и анализ ключевых слов SEO Yoast Пользовательская таксономическая иерархия для пользовательских типов сообщений (например, категории и подкатегории) Получите термин slug по термину id, а затем взорвите его Нужна помощь в добавлении дополнительных элементов управления в пользовательский виджет. Часть 2 Могу ли я настроить таблицу WP по умолчанию Создание вращающегося слайдера заголовка / изображения с использованием настройки темы В чем разница между get_bloginfo ('url') и get_site_url ()? Как вставить пользовательскую функцию в wp_insert_post

media_handle_upload странная вещь

Я использую скрипт переднего конца для загрузки изображений, все работает нормально, но в последнее время я заметил, что загруженные изображения не сохранены в соответствующей директории. Мои настройки состоят в том, чтобы упорядочить мои загрузки в месячные и годовые папки. мои папки – 2011-> 03,04,05 (марш, апрель, май). Проблема в том, что если я загружаю файл сегодня, он сохраняется в папке 03 (март). Если я использую wp_handle_upload, то изображение сохраняется в соответствующей папке 05 (май), но тогда изображение не отображается в медиатеке, и разные размеры не создаются.

Код, который я использую, – это

$image = media_handle_upload('async-upload', ''); 

Solutions Collecting From Web of "media_handle_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() использовать wp_handle_upload() .

Обновить

У меня нет времени, чтобы написать полностью работающий автономный пример, но вот отрывок из моего класса параметров темы. Он обрабатывает закачки, генерирует разные размеры изображений и идентификатор вложения. Он вызывается общей функцией сохранения и обрабатывает несколько загруженных файлов в один спешка.

 /** * 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() проверяет типы MIME, установленные в $fields которые установлены в моем контроллере. Тип MIME для image/x-icon например, представляет собой image/x-icon или image/vnd.microsoft.icon .
  • get_media_name() может использовать предопределенное имя для вложения (например, логотип ).
  • В вашей функции вы, вероятно, захотите вернуть $attach_id и использовать ее в метаполе сообщения или что-то подобное.