Caricamento Immagine da URL

24 apr 2012, 23:55:06
Visualizzazioni: 68.5K
Voti: 24

Mi piace molto il modo in cui SE carica un'immagine da un URL (sono sicuro che piaccia a molti!). Ho cercato ma non sono riuscito a trovare, esiste un plugin o un metodo simile disponibile per WordPress?

So che un'immagine può essere caricata ed elaborata direttamente da un URL inserendo l'URL dell'immagine nella casella Nome File dopo aver cliccato su Carica/Inserisci Media >> Dal Computer >> Scegli File

Screenshot della finestra di caricamento file di WordPress che mostra il campo per inserire l'URL

Questa è una funzionalità eccellente, ma non molto conosciuta (l'ho appena scoperta). Vorrei qualcosa di più simile a SE, dove c'è un'opzione che permette all'utente di sapere come aggiungere l'URL dell'immagine.

Come posso fare per aggiungere semplicemente il campo di caricamento file in una nuova scheda nel media uploader?

Ecco un tutorial su Come aggiungere una nuova scheda nella pagina Media Upload di WordPress, ma voglio aggiungere solo del testo e il campo di caricamento file a quella scheda. Qualche idea? Non ho trovato nulla nel WordPress Codex che tratti direttamente questa funzionalità o il campo di caricamento file.

Grazie.

5
Commenti

Le richieste di funzionalità vanno inviate su trac.wordpress.org.

Wyck Wyck
25 apr 2012 02:10:26

Non è una richiesta di funzionalità. La funzionalità è già integrata.

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

@TravisPflanz Ho trovato questa soluzione per Windows e l'ho trovata geniale - ha decisamente migliorato il mio flusso di lavoro. Conosci qualche modo per farlo su Mac? command+shift+g sembra non supportare gli url, ma non ero sicuro se ci fosse un altro comando.

user658182 user658182
8 nov 2017 15:37:51

Il vantaggio del caricamento da URL rispetto all'"inserimento dell'URL nel file manager di Windows" è che il file viene caricato direttamente dalla sorgente al server WordPress; nel mio caso attraverso la linea gigabit del data center di hosting invece di essere prima scaricato sul mio PC e poi caricato su WordPress tramite una lenta connessione mobile.

Lenne Lenne
31 gen 2018 22:25:40

Il trucco per 'caricare' direttamente da un URL non funziona in Windows 10 (in nessun browser - testato Firefox, Chrome, IE11), e probabilmente non ha funzionato nelle versioni precedenti di Windows dal 2012. Windows scaricherà il file dall'URL in una posizione temporanea sul tuo computer e lo caricherà da lì. Quindi non è possibile usare questo trucco per 'caricare' file video grandi (per aggirare la risposta HTTP 413 del provider di hosting prima che PHP e WordPress possano intervenire).

Jake Jake
1 nov 2019 01:12:48
Tutte le risposte alla domanda 4
5
29

Puoi scrivere uno script PHP o creare il tuo plugin con questo codice, l'ho utilizzato in uno dei miei progetti dove dovevo importare un gran numero di immagini.

Per prima cosa, ottieni l'immagine e salvala nella tua directory di upload:

$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);

Dopo di che, possiamo inserire l'immagine nella libreria media:

$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 );

Ed ecco fatto - tutto pronto. Puoi anche impostare vari altri parametri nell'array dell'allegato. Se hai un array di URL o qualcosa di simile, puoi eseguire lo script in un ciclo - ma tieni presente che le funzioni per le immagini richiedono molto tempo e memoria per essere eseguite.

30 apr 2012 19:42:04
Commenti

oh, mi dispiace, all'inizio non ho visto l'immagine. forse scriverò un piccolo plugin che fa esattamente questo. spero che per ora tu possa arrangiarti con il mio script - ti terrò aggiornato sulle novità riguardo al plugin.

fischi fischi
30 apr 2012 20:07:10

Penso di aver aggiunto l'immagine proprio mentre postavi. Darò un'occhiata più approfondita quando tornerò dalla pausa pranzo. Grazie per il tuo aiuto! È sempre apprezzato.

Travis Pflanz Travis Pflanz
30 apr 2012 20:53:20

l'uso di file_get_contents con un URL non funzionerà se allow_url_fopen è disabilitato in php.ini - wp_remote_get sarà molto più compatibile tra diversi ambienti WordPress

highvolt highvolt
24 feb 2017 16:41:18

Ciao, grazie per la risposta, a cosa servono wp_generate_attachment_metadata e wp_update_attachment_metadata?

gdfgdfg gdfgdfg
25 gen 2019 02:32:11

Questo è bello, ma come faccio a fargli generare una miniatura nella Libreria Media e più dimensioni di immagine?

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

Puoi utilizzare le funzioni download_url() e wp_handle_sideload().

download_url()

Scarica un URL in un file temporaneo locale utilizzando la Classe HTTP di WordPress. Si noti che la funzione chiamante deve eliminare il file con unlink().

wp_handle_sideload()

Gestisce i sideload, ovvero il processo di recupero di un elemento multimediale da un altro server invece di un tradizionale upload. Questo processo include la sanificazione del nome del file, il controllo delle estensioni per il tipo MIME e lo spostamento del file nella directory appropriata all'interno della cartella degli upload.

Esempio:

// Ci dà accesso alle funzioni download_url() e wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php' );

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

// Scarica il file in una cartella temporanea
$temp_file = download_url( $url, $timeout_seconds );

if ( !is_wp_error( $temp_file ) ) {

    // Array basato su $_FILE come nei caricamenti di file PHP
    $file = array(
        'name'     => basename($url), // es: wp-header-logo.png
        'type'     => 'image/png',
        'tmp_name' => $temp_file,
        'error'    => 0,
        'size'     => filesize($temp_file),
    );

    $overrides = array(
        // Dice a WordPress di non cercare i campi del form POST
        // che normalmente sarebbero presenti
        // dato che abbiamo scaricato il file da un server remoto,
        // quindi non ci saranno campi del form
        // Il valore predefinito è true
        'test_form' => false,

        // Impostare questo a false permette a WordPress di accettare file vuoti, non raccomandato
        // Il valore predefinito è true
        'test_size' => true,
    );

    // Sposta il file temporaneo nella directory degli upload
    $results = wp_handle_sideload( $file, $overrides );

    if ( !empty( $results['error'] ) ) {
        // Inserisci qui qualsiasi gestione degli errori
    } else {

        $filename  = $results['file']; // Percorso completo del file
        $local_url = $results['url'];  // URL del file nella cartella upload
        $type      = $results['type']; // Tipo MIME del file

        // Esegui qui qualsiasi azione basata sui risultati sopra
    }

}
6 gen 2017 09:15:42
Commenti

Ho utilizzato questo codice e ha aggiunto con successo l'immagine nella directory uploads, ma quando vado nella Libreria Media nel backend di WordPress non riesco a trovarla da nessuna parte e non appare nei risultati di ricerca. Ho verificato che avesse i permessi corretti ma senza fortuna. C'è qualche motivo per cui non dovrebbe essere visibile?

Nick Nick
15 giu 2018 02:05:03

Non aggiungerà voci nell'area di amministrazione. Se vuoi aggiungere voci nell'admin, allora è meglio usare, wp_insert_attachment(); https://codex.wordpress.org/Function_Reference/wp_insert_attachment

oppure puoi usare questa funzione modificando la variabile globale $_FILES. media_handle_upload(); https://codex.wordpress.org/Function_Reference/media_handle_upload

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

non funziona affatto

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

Directory dei Plugin WordPress - Grab & Save

Questo plugin ti consente di catturare un'immagine da un URL remoto e salvarla nella tua libreria multimediale di WordPress. In questo modo, non dovrai preoccuparti se l'immagine remota viene rimossa dal suo proprietario. Ti risparmia anche i passaggi di scaricare l'immagine sul computer locale e ricaricarla sul tuo WordPress.

Dopo aver catturato l'immagine, WordPress ti chiederà se desideri "inserirla nel post" o "modificare gli attributi", esattamente come avviene dopo aver caricato un'immagine.

2 mag 2012 09:48:22
Commenti

Quello è stato dismesso. Nuovo: LH Add Media From Url: https://wordpress.org/plugins/lh-add-media-from-url

Ralf Ralf
27 ott 2024 01:24:11
1

Esistono almeno tre modi per importare immagini remote in WordPress:

  1. Plugin Grab and Save, menzionato nell'altra risposta. Questo plugin è un po' datato e salva il file direttamente, quindi non crea miniature di diverse dimensioni. Ultimo aggiornamento risale a oltre 2 anni fa al momento della scrittura.

  2. Plugin Import External Image offre un'importazione in blocco per immagini collegate in remoto. Potrebbe essere necessario aumentare il limite di memoria PHP per farlo funzionare. Ultimo aggiornamento risale a oltre 2 anni fa al momento della scrittura.

  3. Plugin Save & Import Image from URL importa l'immagine utilizzando le funzioni native, quindi viene creata correttamente nella galleria media e vengono generate tutte le miniature. Questo plugin è stato aggiornato l'ultima volta nel 2016 e funziona con WordPress 4.7

Dichiarazione: ho creato il plugin Save & Import Image from URL

12 dic 2016 11:32:28
Commenti

grazie! Conosci plugin compatibili con le versioni attuali di WordPress (5.4)?

cduguet cduguet
10 apr 2020 13:49:13