Subida de Imágenes desde URL

24 abr 2012, 23:55:06
Vistas: 68.5K
Votos: 24

Me gusta mucho la forma en que SE sube una imagen desde una URL (¡estoy seguro que a muchos también!). He estado buscando, pero no encuentro, ¿existe algún plugin o método similar disponible para WordPress?

Sé que una imagen puede ser subida y procesada directamente desde una URL ingresando la URL de la imagen en el campo Nombre de Archivo después de hacer clic en Subir/Insertar Medios >> Desde Computadora >> Elegir Archivo

Captura de pantalla del campo de carga de archivos en WordPress

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

¿Cómo puedo agregar simplemente el campo de carga de archivo 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 archivo a esa pestaña. ¿Alguna idea? No pude encontrar nada en el WordPress Codex que trate sobre esta característica o el campo de carga de archivo directamente.

Gracias.

5
Comentarios

Las solicitudes de características pertenecen a trac.wordpress.org.

Wyck Wyck
25 abr 2012 02:10:26

No es una solicitud de característica. La función ya está integrada.

Travis Pflanz Travis Pflanz
25 abr 2012 02:31:34

@TravisPflanz Me encontré con esto para Windows y pensé que era genial, definitivamente mejoró mi flujo de trabajo. ¿Conoces alguna forma de hacer eso en Mac? command+shift+g parece no soportar URLs, pero no estaba seguro si había otro comando.

user658182 user658182
8 nov 2017 15:37:51

La ventaja de subir desde una URL en comparación con "ingresar la URL en el administrador de archivos de Windows" 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 del centro de alojamiento, en lugar de descargarse primero a mi PC y luego subirse a WordPress a través de una conexión móvil lenta.

Lenne Lenne
31 ene 2018 22:25:40

El truco para 'subir' directamente desde una URL no funciona en Windows 10 (en ningún navegador: probé Firefox, Chrome, IE11), 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 tu computadora y lo subirá desde allí. Por lo tanto, no es posible usar este truco para 'subir' archivos de video grandes (para evitar la respuesta HTTP 413 del proveedor de alojamiento antes de que PHP y WordPress siquiera tengan la oportunidad de intervenir).

Jake Jake
1 nov 2019 01:12:48
Todas las respuestas a la pregunta 4
5
29

Puedes escribir un script PHP, o crear tu propio plugin con este código que utilicé en uno de mis proyectos donde tenía que importar una gran cantidad de imágenes.

Primero, obtén la imagen y guárdala en tu directorio de subidas:

$uploaddir = wp_upload_dir();
$uploadfile = $uploaddir['path'] . '/' . $filename;

$contents= file_get_contents('http://midominio.com/carpeta/imagen.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 voilà - aquí lo tienes. También puedes establecer varios otros parámetros en el array de adjuntos. Si tienes un array de URLs o algo similar, puedes ejecutar el script en un bucle - pero ten en cuenta que las funciones de imágenes consumen mucho tiempo y memoria al ejecutarse.

30 abr 2012 19:42:04
Comentarios

oh, lo siento, no vi la imagen al principio. tal vez escribiré un pequeño plugin que haga exactamente esto. espero que puedas arreglártelas con mi script por ahora - te mantendré informado sobre novedades del plugin.

fischi fischi
30 abr 2012 20:07:10

Creo que agregué la imagen justo cuando publicaste. Le echaré un vistazo más profundo cuando regrese del almuerzo. ¡Gracias por tu ayuda! Siempre es apreciada.

Travis Pflanz Travis Pflanz
30 abr 2012 20:53:20

el uso de file_get_contents con una URL no funcionará si allow_url_fopen está deshabilitado en php.ini - wp_remote_get será más compatible en diferentes entornos de WP

highvolt highvolt
24 feb 2017 16:41:18

Hola, gracias por la respuesta, ¿para qué sirven wp_generate_attachment_metadata y wp_update_attachment_metadata?

gdfgdfg gdfgdfg
25 ene 2019 02:32:11

Esto está bien, pero ¿cómo hago para que genere una miniatura en la Biblioteca Multimedia y múltiples tamaños de imagen?

Robert Andrews Robert Andrews
18 may 2020 23:35:38
3
13

Puedes usar las funciones download_url() y wp_handle_sideload().

download_url()

Descarga una URL a un archivo temporal local usando la Clase HTTP de WordPress. Ten en cuenta que la función que llama debe eliminar el archivo con unlink().

wp_handle_sideload()

Maneja sideloads, que es el proceso de recuperar un elemento multimedia desde otro servidor en lugar de una carga tradicional. Este proceso implica sanitizar el nombre del archivo, verificar extensiones para el tipo mime, y mover el archivo al directorio adecuado dentro del directorio de uploads.

Ejemplo:

// Nos da acceso a las funciones download_url() y wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// URL del logo de WordPress
$url = 'http://s.w.org/style/images/wp-header-logo.png';
$timeout_seconds = 5;

// Descargar archivo a directorio temporal
$temp_file = download_url( $url, $timeout_seconds );

if ( !is_wp_error( $temp_file ) ) {

    // Array basado en $_FILE como se ve en subidas de archivos PHP
    $file = array(
        'name'     => basename($url), // ej: wp-header-logo.png
        'type'     => 'image/png',
        'tmp_name' => $temp_file,
        'error'    => 0,
        'size'     => filesize($temp_file),
    );

    $overrides = array(
        // Indica a WordPress que no busque los campos del formulario POST
        // que normalmente estarían presentes ya que
        // descargamos el archivo de un servidor remoto, por lo que
        // no habrá campos de formulario
        // El valor por defecto es true
        'test_form' => false,

        // Establecer esto como false permite a WordPress aceptar archivos vacíos, no recomendado
        // El valor por defecto es true
        'test_size' => true,
    );

    // Mover el archivo temporal al directorio de uploads
    $results = wp_handle_sideload( $file, $overrides );

    if ( !empty( $results['error'] ) ) {
        // Insertar cualquier manejo de errores aquí
    } else {

        $filename  = $results['file']; // Ruta completa al archivo
        $local_url = $results['url'];  // URL al archivo en el directorio de uploads
        $type      = $results['type']; // Tipo MIME del archivo

        // Realizar cualquier acción aquí basada en los resultados anteriores
    }

}
6 ene 2017 09:15:42
Comentarios

Usé este código y agregó exitosamente la imagen en el directorio de uploads, pero cuando voy a mi Biblioteca Multimedia en el backend de WordPress no la encuentro en ningún lado y no aparece en la búsqueda. Me aseguré de que tuviera los permisos correctos pero aún así no tuve suerte. ¿Alguna razón por la que no aparecería?

Nick Nick
15 jun 2018 02:05:03

No agregará entradas en el lado del administrador. Si deseas agregar entradas en el administrador, entonces es mejor que uses: wp_insert_attachment(); https://codex.wordpress.org/Function_Reference/wp_insert_attachment

O puedes usar esto modificando la variable global $_FILES: media_handle_upload(); https://codex.wordpress.org/Function_Reference/media_handle_upload

Rajilesh Panoli Rajilesh Panoli
20 jun 2018 17:31:10

no funciona en absoluto

zEn feeLo zEn feeLo
8 may 2019 10:43:11
1

Directorio de Plugins de WordPress - Grab & Save

Este plugin te permite capturar imágenes desde una URL remota y guardarlas en tu propia biblioteca de medios de WordPress. De esta manera, nunca tendrás que preocuparte si el dueño de la imagen remota la elimina. También te ahorra los pasos de descargar la imagen a tu computadora local y volver a subirla a tu WordPress.

Después de capturar la imagen, WordPress te preguntará si deseas "insertar en la entrada" o "cambiar atributos", al igual que cuando subes una imagen normalmente.

2 may 2012 09:48:22
Comentarios

Ese está descontinuado. El nuevo es: LH Add Media From Url: https://wordpress.org/plugins/lh-add-media-from-url

Ralf Ralf
27 oct 2024 01:24:11
1

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

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

  2. Plugin Import External Image tiene importación masiva para imágenes enlazadas de forma remota. Es posible que necesites aumentar el límite de memoria de PHP para que funcione. Su última actualización fue hace más de 2 años al momento de escribir este artículo.

  3. Plugin Save & Import Image from URL importa la imagen usando funciones nativas, por lo que se crea correctamente en la galería multimedia y se generan todas las miniaturas, etc. Este plugin se actualizó por última vez en 2016 y funciona con WordPress 4.7.

Nota de transparencia: Yo creé el plugin Save & Import Image from URL

12 dic 2016 11:32:28
Comentarios

¡gracias! ¿Conoces plugins compatibles con versiones actuales de WordPress (5.4)?

cduguet cduguet
10 abr 2020 13:49:13