Caricamento immagine da URL


20

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

So che un'immagine può essere caricata e sgretolata direttamente da un URL inserendo l'URL dell'immagine nella casella Nome file dopo aver fatto clic su Carica / Inserisci media >> Da computer >> Scegli file

inserisci qui la descrizione dell'immagine

Questa è una grande funzionalità, ma non molto conosciuta (in realtà l'ho appena scoperta). Vorrei qualcosa di più simile a SE, in cui è presente un'opzione che consente all'utente di aggiungere l'URL dell'immagine.

Come posso aggiungere semplicemente il campo del file di caricamento a una nuova scheda nel caricatore di file multimediali?

Ecco un tutorial per Come aggiungere una nuova scheda nella pagina di caricamento dei file multimediali in wordpress , ma voglio aggiungere solo un po 'di testo e il campo di caricamento del file a quella scheda. Qualche idea? Non sono riuscito a trovare nulla nel codice WordPress che gestisca direttamente questa funzione o il campo di caricamento dei file.

Grazie.


Le richieste di funzionalità appartengono a trac.wordpress.org.
Wyck,

2
Non è una richiesta di funzionalità. La funzionalità è già integrata.
Travis Pflanz,

@TravisPflanz Mi è venuto in mente questo per Windows e ho pensato che fosse geniale - sicuramente migliorato il mio flusso di lavoro. Sai comunque di farlo in Mac? command + shift + g non sembra supportare gli URL, ma non era sicuro che ci fosse un altro comando.
user658182

Il vantaggio del caricamento dall'URL rispetto a "Inserisci l'URL nel filemanager di Windows" è che il file viene caricato direttamente dall'origine sul server wordpress; nel mio caso sulla linea gigabit dei centri di hosting anziché essere prima scaricato sul mio pc e poi fino al wordpress su una connessione mobile lenta.
Lenne,

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 carica da lì. Quindi non è possibile usare questo trucco per "caricare" file video di grandi dimensioni (per bypassare la risposta HTTP 413 del provider di hosting prima ancora che PHP e WordPress diano un'occhiata).
Jake,

Risposte:


24

puoi scrivere uno script php o creare il tuo plugin di questo codice qui, l'ho usato in uno dei miei progetti in cui ho dovuto importare un gran numero di immagini.

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

successivamente, possiamo inserire l'immagine nella libreria multimediale:

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

e voilà - eccoci. è inoltre possibile impostare vari altri parametri nell'array degli allegati. se hai una serie di URL o qualcosa del genere, puoi eseguire lo script in un ciclo, ma tieni presente che le funzioni dell'immagine richiedono molto tempo e memoria per essere eseguite.


oh, mi dispiace, all'inizio non ho visto l'immagine. forse scriverò un piccolo plugin facendo esattamente questo. spero che tu possa andare d'accordo con la mia sceneggiatura finora - ti terrò aggiornato sulle novità del plugin.
fischi,

Penso di aver aggiunto l'immagine così come hai pubblicato. Prenderò uno sguardo più approfondito quando torno da pranzo. Grazie per il tuo aiuto! Sempre apprezzato.
Travis Pflanz,

l'utilizzo di file_get_contentscon un URL non funzionerà se allow_url_fopendisabilitato in php.ini- wp_remote_getsarà più altamente compatibile in diversi ambienti WP
highvolt

Ciao, grazie per la risposta, per cosa è wp_generate_attachment_metadatae wp_update_attachment_metadata?
gdfgdfg

12

È possibile utilizzare le funzioni download_url()e wp_handle_sideload().

download_url()

Scarica un URL in un file temporaneo locale utilizzando la classe HTTP WordPress. Si noti che la funzione chiamante deve scollegare () il file.

wp_handle_sideload()

Gestire i sideload, ovvero il processo di recupero di un elemento multimediale da un altro server anziché un caricamento multimediale tradizionale. Questo processo comporta la sanificazione del nome file, il controllo delle estensioni per il tipo mime e lo spostamento del file nella directory appropriata all'interno della directory uploads.

Esempio:

// 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
    }

}

Ho usato questo codice e ha aggiunto correttamente l'immagine nella directory dei caricamenti, ma quando vado alla mia libreria multimediale nel backend di Wordpress non riesco a trovarlo da nessuna parte e non viene visualizzato nella ricerca. Mi sono assicurato che avesse i permessi corretti ma non ancora fortunati. Qualche motivo per cui non si presenterebbe?
Nick,

Non aggiungerà voci nel lato amministratore. Se vuoi aggiungere voci in admin, allora meglio puoi usare, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment oppure puoi usarlo modificando la variabile globale $ _FILES. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli

non funziona affatto
Cameron A

5

Directory dei plugin di WordPress - Prendi e salva

Questo plugin ti consente di catturare immagini dall'URL remoto e salvarle nella tua libreria multimediale wordpress. In questo modo, non ti sei mai preoccupato se l'immagine remota è stata rimossa dal suo proprietario. Ciò consente anche di risparmiare passaggi per scaricare l'immagine sul computer locale e caricarla di nuovo sul proprio wordpress.

Dopo aver catturato l'immagine, wordpress ti chiederà di "inserire nel post" o "modificare gli attributi" proprio come dopo aver caricato un'immagine.


1

Esistono almeno tre modi per importare immagini remote in WordPress:

  1. Prendi e salva plugin , che è menzionato nell'altra risposta. Questo plug-in è un po 'più vecchio e salva il file direttamente, quindi non vengono create miniature di dimensioni diverse. Ultimo aggiornamento oltre 2 anni fa al momento della scrittura.

  2. Importa plug-in per immagini esterne ha un'importazione in blocco per immagini collegate in remoto. Potrebbe essere necessario aumentare il limite di memoria PHP per farlo funzionare. Ultimo aggiornamento oltre 2 anni fa al momento della scrittura.

  3. Salva e importa immagine da URL Il plug-in importa l'immagine utilizzando le funzioni native, quindi viene creata correttamente nella galleria multimediale e vengono create tutte le miniature ecc. Questo plugin è stato aggiornato l'ultima volta nel 2016 e funziona con WordPress 4.7

Divulgazione: ho creato l'immagine di salvataggio e importazione dal plug-in URL

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.