Încărcare imagine din URL

24 apr. 2012, 23:55:06
Vizualizări: 68.5K
Voturi: 24

Îmi place foarte mult modul în care SE încarcă o imagine dintr-un URL (sunt sigur că multora le place!). Am căutat, dar nu am găsit, există vreun plugin sau o metodă similară disponibilă pentru WordPress?

Știu că o imagine poate fi încărcată și procesată direct dintr-un URL prin introducerea URL-ului imaginii în caseta Nume Fișier după ce dai click pe Încarcă/Inserează Media >> De pe Computer >> Alege Fișier

exemplu de încărcare imagine din URL în WordPress

Aceasta este o funcționalitate grozavă, dar nu foarte cunoscută (de fapt, tocmai am descoperit-o). Mi-ar plăcea ceva mai asemănător cu SE, unde există o opțiune care să informeze utilizatorul să adauge URL-ul imaginii.

Cum pot adăuga simplu câmpul de încărcare fișier într-un tab nou în uploadarea media?

Aici este un tutorial pentru Cum să adaugi un tab nou în pagina de încărcare Media în WordPress, dar vreau să adaug doar un text și câmpul de încărcare fișier în acel tab. Aveți idei? Nu am putut găsi nimic în WordPress Codex care să trateze această funcționalitate sau câmpul de încărcare fișier în mod direct.

Mulțumesc.

5
Comentarii

Solicitările de funcționalități trebuie trimise pe trac.wordpress.org.

Wyck Wyck
25 apr. 2012 02:10:26

Nu este o solicitare de funcționalitate. Funcționalitatea este deja implementată.

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

@TravisPflanz Am dat peste această soluție pentru Windows și mi s-a părut genială - cu siguranță mi-a îmbunătățit fluxul de lucru. Știi cumva cum se poate face acest lucru pe Mac? command+shift+g nu pare să accepte URL-uri, dar nu eram sigur dacă există altă comandă.

user658182 user658182
8 nov. 2017 15:37:51

Avantajul încărcării prin URL față de "introducerea URL-ului în managerul de fișiere Windows" este că fișierul este încărcat direct de la sursă pe serverul WordPress; în cazul meu, prin linia gigabit a centrului de hosting, în loc să fie mai întâi descărcat pe PC-ul meu și apoi încărcat pe WordPress prin conexiunea mobilă lentă.

Lenne Lenne
31 ian. 2018 22:25:40

Trucul de a 'încărca' direct dintr-un URL nu funcționează în Windows 10 (în niciun browser - testat Firefox, Chrome, IE11) și probabil că nu a funcționat în versiunile anterioare de Windows din 2012. Windows va descărca fișierul de la URL într-o locație temporară pe computerul dumneavoastră și va încărca de acolo. Așadar, nu este posibil să folosiți acest truc pentru a 'încărca' fișiere video mari (pentru a ocoli răspunsul HTTP 413 al furnizorului de hosting înainte ca PHP și WordPress să intre în scenă).

Jake Jake
1 nov. 2019 01:12:48
Toate răspunsurile la întrebare 4
5
29

poți scrie un script php sau să-ți creezi propriul plugin din acest cod, l-am folosit într-unul din proiectele mele unde a trebuit să import un număr mare de imagini.

mai întâi, obține imaginea și stocheaz-o în directorul de încărcare:

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

după aceea, putem insera imaginea în biblioteca 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 );

și voila - gata. poți seta și alți parametri în array-ul de atașament. dacă ai un array de url-uri sau ceva similar, poți rula scriptul într-o buclă - dar fii atent că funcțiile pentru imagini consumă mult timp și memorie pentru execuție.

30 apr. 2012 19:42:04
Comentarii

oh, scuze, nu am văzut imaginea la început. poate voi scrie un mic plugin care face exact asta. sper că te poți descurca cu scriptul meu până acum - te voi ține la curent cu noutățile despre plugin.

fischi fischi
30 apr. 2012 20:07:10

Cred că am adăugat imaginea chiar în momentul în care ai postat. O să mă uit mai atent când mă întorc de la prânz. Mulțumesc pentru ajutor! Mereu apreciat.

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

utilizarea funcției file_get_contents cu un URL nu va funcționa dacă allow_url_fopen este dezactivat în php.ini - wp_remote_get va fi mult mai compatibil în diferite medii WordPress

highvolt highvolt
24 feb. 2017 16:41:18

Bună, mulțumesc pentru răspuns, pentru ce sunt wp_generate_attachment_metadata și wp_update_attachment_metadata?

gdfgdfg gdfgdfg
25 ian. 2019 02:32:11

Acest lucru este frumos, dar cum pot face să genereze o miniatură în Biblioteca Media și mai multe dimensiuni ale imaginii?

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

Puteți folosi funcțiile download_url() și wp_handle_sideload().

download_url()

Descarcă o adresă URL într-un fișier temporar local folosind clasa WordPress HTTP. Rețineți că funcția apelantă trebuie să șteargă fișierul cu unlink().

wp_handle_sideload()

Gestionează încărcările laterale, care reprezintă procesul de preluare a unui element media de pe un alt server în loc de o încărcare tradițională de media. Acest proces implică sanitarizarea numelui de fișier, verificarea extensiilor pentru tipul MIME și mutarea fișierului în directorul corespunzător din directorul de încărcări.

Exemplu:

// Ne oferă acces la funcțiile download_url() și wp_handle_sideload()
require_once( ABSPATH . 'wp-admin/includes/file.php' );

// URL-ul către sigla WordPress
$url = 'http://s.w.org/style/images/wp-header-logo.png';
$timeout_seconds = 5;

// Descarcă fișierul în directorul temporar
$temp_file = download_url( $url, $timeout_seconds );

if ( !is_wp_error( $temp_file ) ) {

    // Matrice bazată pe $_FILE așa cum apare în încărcările de fișiere PHP
    $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(
        // Îi spune WordPress să nu caute câmpurile formularului POST
        // care ar fi în mod normal prezente deoarece
        // am descărcat fișierul de pe un server la distanță, deci nu vor
        // exista câmpuri de formular
        // Valoarea implicită este true
        'test_form' => false,

        // Setând aceasta la false permite WordPress să accepte fișiere goale, nu este recomandat
        // Valoarea implicită este true
        'test_size' => true,
    );

    // Mută fișierul temporar în directorul de încărcări
    $results = wp_handle_sideload( $file, $overrides );

    if ( !empty( $results['error'] ) ) {
        // Introduceți orice gestionare de eroare aici
    } else {

        $filename  = $results['file']; // Calea completă către fișier
        $local_url = $results['url'];  // URL-ul către fișier în directorul de încărcări
        $type      = $results['type']; // Tipul MIME al fișierului

        // Efectuați orice acțiuni aici bazate pe rezultatele de mai sus
    }

}
6 ian. 2017 09:15:42
Comentarii

Am folosit acest cod și a adăugat cu succes imaginea în directorul uploads, dar când mă duc în Media Library din backend-ul WordPress, nu o găsesc nicăieri și nu apare în căutare. Am verificat dacă are permisiunile corecte, dar tot fără succes. Există vreun motiv pentru care nu ar apărea?

Nick Nick
15 iun. 2018 02:05:03

Nu va adăuga intrări în partea de administrare. Dacă dorești să adaugi intrări în admin, atunci este mai bine să folosești, wp_insert_attachment(); https://codex.wordpress.org/Function_Reference/wp_insert_attachment

sau poți folosi această metodă modificând variabila globală $_FILES. media_handle_upload(); https://codex.wordpress.org/Function_Reference/media_handle_upload

Rajilesh Panoli Rajilesh Panoli
20 iun. 2018 17:31:10

nu funcționează deloc

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

Directorul de Plugin-uri WordPress - Descarcă & Salvează

Acest plugin vă permite să descărcați imagini de la o adresă URL la distanță și să le salvați în propria bibliotecă media WordPress. Astfel, nu vă mai faceți griji dacă imaginea de la distanță este ștearsă de proprietarul său. De asemenea, vă scutește de pașii de a descărca imaginea pe computerul local și de a o încărca din nou în propriul WordPress.

După descărcarea imaginii, WordPress vă va oferi opțiunea de a o "insera în postare" sau de a "modifica atributele", exact ca după ce încărcați o imagine.

2 mai 2012 09:48:22
Comentarii

Acel este dezafectat. Noul: LH Add Media From Url: https://wordpress.org/plugins/lh-add-media-from-url

Ralf Ralf
27 oct. 2024 01:24:11
1

Există cel puțin trei modalități de a importa imagini externe în WordPress:

  1. Plugin-ul Grab and Save, care este menționat în celălalt răspuns. Acest plugin este un pic mai vechi și salvează fișierul direct, așa că miniaturile în diferite dimensiuni nu sunt create. Ultima actualizare acum peste 2 ani la momentul scrierii.

  2. Plugin-ul Import External Image are funcționalitate de import în masă pentru imagini legate la distanță. Poate fi necesar să măriți limita de memorie PHP pentru ca acesta să funcționeze. Ultima actualizare acum peste 2 ani la momentul scrierii.

  3. Plugin-ul Save & Import Image from URL importă imaginea folosind funcții native, astfel încât este creată corect în galeria media și toate miniaturile etc. sunt generate. Acest plugin a fost actualizat ultima dată în 2016 și funcționează cu WordPress 4.7

Declarație: Am creat Plugin-ul Save & Import Image from URL

12 dec. 2016 11:32:28
Comentarii

mulțumesc! Știi despre pluginuri compatibile cu versiunile actuale de WordPress (5.4)?

cduguet cduguet
10 apr. 2020 13:49:13