Intereting Posts
Отображение выбранных имен терминов (без повторения) из каждой записи в пользовательском типе сообщения Как получить значения параметров, установленные со всех сайтов в многоуровневой настройке? Переадресация страницы Использование запроса WP для поиска по нескольким мета-полям Вставить интерактивный pdf-файл Как создать пользовательское меню Элемент CSS-классы для wp_page_menu () или wp_list_pages () почему я получаю сообщение «фатальная ошибка» при загрузке фотографий в пределах указанного МБ? Получение ошибки базы данных WordPress Знать, когда обновление (ы) выполнено Как заставить wp_enqueue_scripts загружаться в END <head>? вернуть неформатированный контент при заключении короткого кода Проблемы с дочерью, functions.php Изменить состояние логотипа на основе URL-адреса Заголовок рубрики Need Category для ссылки на список категорий Условный пользовательский заголовок изображения

Загрузка файла, загрузка только имени файла

Я работаю над простой загрузкой изображения на передний план в WordPress. С помощью этого фрагмента кода я могу загрузить в раздел wordpress media, но я загружаю только имя и URL-адрес файла, а не изображение.

Кто-нибудь знает, что мне нужно сделать, чтобы загрузить изображение?

Моя форма:

<form id="dash_action" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input name="submit" type="submit" class="button" value="<?php _e( 'Save settings' ); ?>" /> </form><!--End dash_action--> 

Моя обработка PHP-форм:

 if( isset( $_POST['submit'] ) ) { $filename = $_FILES['file']['name']; $wp_filetype = wp_check_filetype( basename($filename), null ); $wp_upload_dir = wp_upload_dir(); $attachment = array( 'guid' => $wp_upload_dir['subdir'] . '/' . basename( $filename ), 'post_mime_type' => $wp_filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); $attach_id = wp_insert_attachment( $attachment, $filename, 37 ); 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 ); } 

Solutions Collecting From Web of "Загрузка файла, загрузка только имени файла"

В кодексе WordPress указано, что «файл ДОЛЖЕН быть в каталоге uploads». Я добавил строку для перемещения загруженного файла в каталог uploads и изменил путь guid.

 if( isset( $_POST['submit'] ) ) { $filename = $_FILES['file']['name']; $wp_filetype = wp_check_filetype( basename($filename), null ); $wp_upload_dir = wp_upload_dir(); // Move the uploaded file into the WordPress uploads directory move_uploaded_file( $_FILES['file']['tmp_name'], $wp_upload_dir['path'] . '/' . $filename ); $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename( $filename ), 'post_mime_type' => $wp_filetype['type'], 'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ), 'post_content' => '', 'post_status' => 'inherit' ); $filename = $wp_upload_dir['path'] . '/' . $filename; $attach_id = wp_insert_attachment( $attachment, $filename, 37 ); 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 ); } 

media_handle_sideload – ваш друг!

Применение:

 media_handle_sideload( $file_array, $post_id, $desc, $post_data ); 

Таким образом, ваш код значительно сокращается:

 if( isset( $_POST['submit'] ) ) { $attach_id = media_handle_sideload( $_FILES['file'], 0, 'description' ); } 

Вы также можете передать массив сообщений с заголовком и т. Д.

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

Обязательно используйте is_wp_error() для проверки отказа.

Просто используйте media_handle_upload() . Он делает все это для вас, включая генерацию метаданных и все остальное.

Если вы действительно хотите использовать свой собственный способ, вы забыли о вызове wp_handle_upload() чтобы фактически переместить файл в нужное место.