Luego de de nuestra extensa compilación de información dimos con la respuesta esta dificultad que presentan muchos usuarios. Te regalamos la respuesta y nuestro objetivo es servirte de mucha apoyo.
puede escribir un script php, o hacer su propio complemento de este código aquí, lo usé en uno de mis proyectos donde tuve que importar una gran cantidad de imágenes.
primero, obtenga la imagen y guárdela en su directorio de carga:
$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);
después de eso, podemos insertar la imagen en la biblioteca de medios:
$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 );
y listo – aquí vamos. también puede establecer varios otros parámetros en el archivo adjunto array. si tienes un array de URL o algo así, puede ejecutar el script en un bucle, pero tenga en cuenta que las funciones de imagen requieren mucho tiempo y memoria para ejecutarse.
Puedes usar las funciones download_url()
y wp_handle_sideload()
.
download_url()
Descarga una URL a un archivo temporal local utilizando la clase HTTP de WordPress. Tenga en cuenta que la función de llamada debe desvincular () el archivo.
wp_handle_sideload()
Manejar cargas laterales, que es el proceso de recuperar un elemento de medios de otro servidor en lugar de una carga de medios tradicional. Este proceso implica desinfectar el nombre del archivo, verificar las extensiones para el tipo mime y mover el archivo al directorio apropiado dentro del directorio de cargas.
Ejemplo:
// 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
Directorio de complementos de WordPress: agarrar y guardar
Este complemento le permite tomar una imagen de una URL remota y guardarla en su propia biblioteca de medios de wordpress. Al hacerlo, nunca se preocupó si su propietario eliminó la imagen remota. Esto también le ahorra pasos para descargar la imagen a la computadora local y cargarla nuevamente a su propio wordpress.
Después de capturar la imagen, wordpress le pedirá que “inserte en la publicación” o “cambie attributes”al igual que después de subir una imagen.