Carga de imagen desde URL

20

Realmente me gusta la forma en que SE sube una imagen desde una URL (¡estoy seguro de que muchos lo hacen!). He estado buscando, pero no puedo encontrar, ¿hay un complemento o un método similar a este disponible para WordPress?

Sé que una imagen se puede cargar y procesar directamente desde una URL ingresando la URL de la imagen en el cuadro Nombre de archivo después de hacer clic en Cargar / Insertar medios >> Desde la computadora >> Elegir archivo

ingrese la descripción de la imagen aquí

Esta es una gran característica, pero no muy conocida (en realidad, acabo de descubrirla). Me gustaría algo un poco más como SE, donde hay una opción que le permite al usuario saber agregar la URL de la imagen.

¿Cómo puedo agregar simplemente el campo de carga de archivos a una nueva pestaña en el cargador de medios?

Aquí hay un tutorial sobre cómo agregar una nueva pestaña en la página de carga de medios en WordPress , pero quiero agregar solo algo de texto y el campo de carga de archivos a esa pestaña. ¿Algunas ideas? No pude encontrar nada en el Codex de WordPress que trate con esta característica o el campo de carga de archivos directamente.

Gracias.

Travis Pflanz
fuente
Las solicitudes de funciones pertenecen a trac.wordpress.org.
Wyck
2
No es una solicitud de función. La función ya está incorporada.
Travis Pflanz
@TravisPflanz Encontré esto para Windows y pensé que era genial, definitivamente mejoró mi flujo de trabajo. ¿Sabes de todos modos hacer eso en Mac? command + shift + g no parece admitir URL, pero no estaba seguro de si había otro comando.
user658182
La ventaja de cargar desde url sobre "enter url in windows filemanager" es que el archivo se carga directamente desde la fuente al servidor de wordpress; en mi caso a través de la línea gigabit de los centros de alojamiento en lugar de descargarla primero en mi PC y luego subir a WordPress a través de una conexión móvil lenta.
Lenne
El truco para 'cargar' directamente desde una URL no funciona en Windows 10 (en ningún Firefox, Chrome, IE11 probado en el navegador), y probablemente no ha funcionado en versiones anteriores de Windows desde 2012. Windows descargará el archivo desde la URL a una ubicación temporal en su computadora y subir desde allí. Por lo tanto, no es posible usar este truco para 'cargar' archivos de video grandes (para evitar la respuesta HTTP 413 del proveedor de alojamiento antes de que PHP y WordPress incluso puedan verlo).
Jake

Respuestas:

24

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 otros parámetros en la matriz de archivos adjuntos. Si tiene una serie de URL o algo así, puede ejecutar el script en un bucle, pero tenga en cuenta que las funciones de la imagen requieren mucho tiempo y memoria para ejecutarse.

fischi
fuente
oh, lo siento, no vi la imagen al principio. tal vez escribiré un pequeño complemento haciendo exactamente esto. Espero que puedas llevarte bien con mi script hasta ahora. Te mantendré informado sobre las novedades de los complementos.
fischi
Creo que agregué la imagen tal como la publicaste. Tomaré una mirada más profunda cuando regrese del almuerzo. ¡Gracias por su ayuda! Siempre apreciado
Travis Pflanz
el uso de file_get_contentscon una URL no funcionará si allow_url_fopenestá deshabilitado en php.ini- wp_remote_getserá más altamente compatible en diferentes entornos de WP
highvolt
Hola, gracias por la respuesta, por lo que es wp_generate_attachment_metadatay wp_update_attachment_metadata?
gdfgdfg
12

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 multimedia de otro servidor en lugar de una carga multimedia 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
    }

}
Rajilesh Panoli
fuente
Utilicé este código y agregué con éxito la imagen en el directorio de cargas, pero cuando voy a mi Biblioteca multimedia en el backend de Wordpress, no puedo encontrarlo en ningún lado y no aparece en la búsqueda. Me aseguré de que tuviera los permisos correctos pero aún así no tuviera suerte. ¿Alguna razón por la que no aparecería?
Nick
No agregará entradas en el lado del administrador. Si desea agregar entradas en admin, mejor puede usar, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment o puede usar esto modificando la variable global $ _FILES. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli
no funciona en absoluto
Cameron A
5

Directorio de complementos de WordPress - Grab & Save

Este complemento le permite tomar imágenes de la URL remota y guardarlas en su propia biblioteca de medios de WordPress. Al hacerlo, nunca te preocupó si la imagen remota fue eliminada por su propietario. Esto también le ahorra pasos para descargar la imagen a la computadora local y cargarla nuevamente en su propio wordpress.

Después de tomar la imagen, WordPress le pedirá que "inserte en la publicación" o "cambie los atributos" justo después de cargar una imagen.

Travis Pflanz
fuente
1

Hay al menos tres formas de importar imágenes remotas a WordPress:

  1. Grab and Save Plugin , que se menciona en la otra respuesta. Este complemento es un poco más antiguo y guarda el archivo directamente, por lo que no se crean miniaturas de diferentes tamaños. Última actualización hace más de 2 años al momento de escribir.

  2. El complemento Importar imagen externa tiene una importación masiva para imágenes vinculadas remotas. Es posible que necesite aumentar su límite de memoria PHP para que esto funcione. Última actualización hace más de 2 años al momento de escribir.

  3. Guardar e importar imagen desde el complemento de URL importa la imagen utilizando funciones nativas, por lo que se crea correctamente en la galería de medios y se crean todas las miniaturas, etc. Este complemento se actualizó por última vez en 2016 y funciona con WordPress 4.7

Divulgación: creé la imagen Guardar e importar desde el complemento de URL

usuario3096626
fuente