Intereting Posts
Отсутствие сообщений в списке пользовательских таксономии Проблема с несколькими, динамическими, боковыми панелями – первая боковая панель не работает должным образом Как я могу создавать почтовые поля в WordPress? Отключить виджеты на определенных должностях Как добавить флажок с несколькими значениями в таблице? Крючок для загрузки почты и страницы Переопределение навигации в профиле Buddy Press Получить следующее событие, используя date_query Как добавить мое приложение PHP на страницу WordPress, сохраняя семантические URL? Пользовательский интерфейс jQuery внутри виджета на странице администратора Как добавить URL-адрес обратной связи для моих филиалов WordPress? Почему локальная программа WordPress устанавливает вызовы в реальном времени? Пользовательское меню – Отключить связь. Сделать родительские категории недоступными Показывать галерею сверху до содержимого

Использование «media_handle_sideload» для загрузки изображений программно не загружает изображение в медиабиблиотеку

Я использую этот код, чтобы попытаться загрузить изображения, расположенные на моем сервере, в медиа-библиотеку моей установки wordpress.

<?php include("../../../wp-blog-header.php"); include("../../../wp-admin/includes/file.php"); include("../../../wp-admin/includes/media.php"); $id = 0; $image = $_SERVER['DOCUMENT_ROOT'] . "/image01.jpg"; $array = array( //array to mimic $_FILES 'name' => basename($image), //isolates and outputs the file name from its absolute path 'type' => 'image/jpeg', //yes, thats sloppy, see my text further down on this topic 'tmp_name' => $image, //this field passes the actual path to the image 'error' => 0, //normally, this is used to store an error, should the upload fail. but since this isnt actually an instance of $_FILES we can default it to zero here 'size' => filesize($image) //returns image filesize in bytes ); media_handle_sideload($array, $id); //the actual image processing, that is, move to upload directory, generate thumbnails and image sizes and writing into the database happens here ?> 

Я вижу, что этот код принимает мой образ под названием «image01.jpg», расположенный на этом пути, а затем помещает изображение в / wp-contents / uploads /. Однако, когда я иду на панель администратора в WordPress, чтобы увидеть изображение в медиабиблиотеке, я не вижу изображение. Также нет никаких строк в wp_posts этого изображения.

ОБНОВИТЬ:

На этот раз я использовал этот код:

 $result = media_handle_sideload($array, $id); echo "Finish media handle sideload<br>"; if ( ! is_wp_error( $result ) ) { echo "Result<br>"; print_r($result); } else { echo "Error<br>"; print_r($results); } echo "Finish script<br>"; 

Ничто не отображается, это исполнение. Я не вижу сообщение msg. «Завершить обработку дескриптора носителя». Однако файл перемещается с пути, указанного в «$ image», на «wp-content / uploads». Обратите внимание, что файлы перемещаются, а не копируются, поэтому, если я выполняю сценарий без повторного копирования изображения в исходный код (путь от $ image), я могу увидеть некоторые предупреждения о функции filesize, как это:

Предупреждение: filesize (): stat не удалось выполнить для C: /Users/dlopez/Documents/Development/web-folders/image01.jpg в C: \ Users \ dlopez \ Documents \ Development \ web-folders \ wp_test \ wp-content \ plugins \ pods-csv-importer \ upload.php в строке 16

Solutions Collecting From Web of "Использование «media_handle_sideload» для загрузки изображений программно не загружает изображение в медиабиблиотеку"

Ваш отказ и получение объекта WP_Error возвращен до запуска функции wp_insert_attachment ().

Вы всегда должны включать проверку is_wp_error( $thing ) при вызове функции, которая возвращает WP_Errors .

 $result = media_handle_sideload($array, $id); if ( ! is_wp_error( $result ) ) { return $result; } else { var_dump( $result->get_error_messages ); } 

Ваша проблема будет указана в выводе сообщений об ошибках

Вы не должны назначать значение valus для image . В соответствии с примером на этой странице сначала вы должны загружать файлы во временный каталог с помощью функции download_url() и присваивать объект, возвращаемый этой функцией, в $image :

 $image = download_url("http://yoursite.com/image01.jpg"); 

Не забудьте unlink() $image в конце функции.

Форма, из которой поступает файл:

 enctype="multipart/form-data" 

например,

 <form method="post" enctype="multipart/form-data"> 
 <?php // Need to require these files if ( !function_exists('media_handle_upload') ) { require_once(ABSPATH . "wp-admin" . '/includes/image.php'); require_once(ABSPATH . "wp-admin" . '/includes/file.php'); require_once(ABSPATH . "wp-admin" . '/includes/media.php'); } $url = "http://img.wordpressask.com/uploads/img_fjords.jpg"; $tmp = download_url( $url ); if( is_wp_error( $tmp ) ){ // download failed, handle error } $post_id = 0; // set 0 for no parent post id or simple attachment otherwise pass post id for include in post $desc = "The WordPress Logo"; $file_array = array(); // Set variables for storage // fix file filename for query strings preg_match('/[^\?]+\.(jpg|jpe|jpeg|gif|png)/i', $url, $matches); $file_array['name'] = basename($matches[0]); $file_array['tmp_name'] = $tmp; // If error storing temporarily, unlink if ( is_wp_error( $tmp ) ) { @unlink($file_array['tmp_name']); $file_array['tmp_name'] = ''; } // do the validation and storage stuff $id = media_handle_sideload( $file_array, $post_id, $desc ); // If error storing permanently, unlink if ( is_wp_error($id) ) { @unlink($file_array['tmp_name']); return $id; } $src = wp_get_attachment_url( $id ); ?> 

примените этот код и передайте URL-адрес вашего файла. Это работает для меня.

для получения дополнительной информации, пожалуйста, проверьте ссылку на функцию WordPress для media_handle_sideload .