Загрузка изображения с URL-адреса
Мне очень нравится, как SE загружает изображение с URL-адреса (я уверен, что многие так делают!). Я искал, но не могу найти, есть ли плагин или метод, аналогичный этому, доступный для WordPress?
Я знаю, что изображение может быть загружено и обработано непосредственно с URL-адреса , введя URL-адрес изображения в поле Имя файла после нажатия кнопки Загрузить/Вставить носитель>> С компьютера>> Выберите Файл
Это отличная функция, но не очень широко распространенная известный (я на самом деле только что обнаружил это). Я бы хотел что-то более похожее на SE, где есть опция, позволяющая пользователю добавлять URL-адрес изображения.
Как я могу просто добавить поле "Загрузить файл" на новую вкладку в загрузчике мультимедиа?
Вот учебник для Как добавить новую вкладку на странице загрузки мультимедиа в wordpress, но я хочу добавить на эту вкладку только текст и поле загрузки файла. Есть какие-нибудь идеи? Я не смог найти в Кодексе WordPress ничего, что имеет дело непосредственно с этой функцией или полем загрузки файла.
Спасибо.
4 answers
Вы можете написать php-скрипт или сделать свой собственный плагин из этого кода здесь, я использовал его в одном из своих проектов, где мне пришлось импортировать большое количество изображений.
Сначала получите изображение и сохраните его в своем каталоге загрузки:
$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . '/' . $filename;
$contents= file_get_contents('http://mydomain.com/folder/image.jpg');
$savefile = fopen($uploadfile, 'w');
fwrite($savefile, $contents);
fclose($savefile);
После этого мы можем вставить изображение в медиатеку:
$wp_filetype = wp_check_filetype(basename($filename), null );
$attachment = array(
'post_mime_type' => $wp_filetype['type'],
'post_title' => $filename,
'post_content' => '',
'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $uploadfile );
$imagenew = get_post( $attach_id );
$fullsizepath = get_attached_file( $imagenew->ID );
$attach_data = wp_generate_attachment_metadata( $attach_id, $fullsizepath );
wp_update_attachment_metadata( $attach_id, $attach_data );
И вуаля - поехали. вы также можете задать различные другие параметры в массиве вложений. если у вас есть массив URL-адресов или что-то в этом роде, вы можете запустить скрипт в цикле - но имейте в виду, что функции изображения занимают много времени и памяти для выполнения.
Вы можете использовать функции download_url()
и wp_handle_sideload()
.
Загружает URL-адрес в локальный временный файл с помощью HTTP-класса WordPress. Пожалуйста, обратите внимание, что вызывающая функция должна разорвать связь() с файлом.
Обработка дополнительных загрузок, которая представляет собой процесс извлечения мультимедийного элемента с другого сервера вместо традиционной загрузки мультимедиа. Этот процесс включает в себя очистку имени файла, проверку расширений на mime введите и переместите файл в соответствующий каталог в каталоге загрузки.
Пример:
// Gives us access to the download_url() and wp_handle_sideload() functions
require_once( ABSPATH . 'wp-admin/includes/file.php' );
// URL to the WordPress logo
$url = 'http://s.w.org/style/images/wp-header-logo.png';
$timeout_seconds = 5;
// Download file to temp dir
$temp_file = download_url( $url, $timeout_seconds );
if ( !is_wp_error( $temp_file ) ) {
// Array based on $_FILE as seen in PHP file uploads
$file = array(
'name' => basename($url), // ex: wp-header-logo.png
'type' => 'image/png',
'tmp_name' => $temp_file,
'error' => 0,
'size' => filesize($temp_file),
);
$overrides = array(
// Tells WordPress to not look for the POST form
// fields that would normally be present as
// we downloaded the file from a remote server, so there
// will be no form fields
// Default is true
'test_form' => false,
// Setting this to false lets WordPress allow empty files, not recommended
// Default is true
'test_size' => true,
);
// Move the temporary file into the uploads directory
$results = wp_handle_sideload( $file, $overrides );
if ( !empty( $results['error'] ) ) {
// Insert any error handling here
} else {
$filename = $results['file']; // Full path to the file
$local_url = $results['url']; // URL to the file in the uploads dir
$type = $results['type']; // MIME type of the file
// Perform any actions here based in the above results
}
}
Каталог плагинов WordPress - Захват и сохранение
Этот плагин позволяет вам захватывать изображения с удаленного URL-адреса и сохранять их в вашей собственной медиатеке wordpress. Поступая таким образом, вы никогда не беспокоились о том, что удаленное изображение было удалено его владельцем. Это также сэкономит вам время для загрузки изображения на локальный компьютер и повторной загрузки на ваш собственный wordpress.
После захвата изображения wordpress предложит вам либо "вставить в сообщение", либо "изменить атрибуты", просто например, после загрузки изображения.
Существует по крайней мере три способа импорта удаленных изображений в WordPress:
Возьмите и сохраните плагин, который упоминается в другом ответе. Этот плагин немного старше и сохраняет файл напрямую, поэтому миниатюры разных размеров не создаются. Последнее обновление более 2 лет назад на момент написания статьи.
Плагин импорта внешних изображений поддерживает массовый импорт удаленных связанных изображений. Для этого вам может потребоваться увеличить лимит памяти PHP работать. Последнее обновление более 2 лет назад на момент написания статьи.
Сохранить и импортировать изображение из плагина URL импортирует изображение с помощью собственных функций, поэтому оно правильно создано в галерее мультимедиа, и все эскизы и т. Д. Сделаны. Этот плагин в последний раз обновлялся в 2016 году и работает с WordPress 4.7
Раскрытие информации: Я создал Плагин Сохранения и импорта изображений из URL