Unggah Gambar dari URL

20

Saya sangat suka cara SE mengunggah gambar dari URL (saya yakin banyak yang melakukannya!). Saya sudah mencari, tetapi tidak dapat menemukan, apakah ada plugin atau metode yang mirip dengan ini tersedia untuk WordPress?

Saya tahu gambar dapat diunggah dan diolah langsung dari URL dengan memasukkan URL gambar ke dalam kotak Nama File setelah Anda mengklik Unggah / Masukkan Media >> Dari Komputer >> Pilih File

masukkan deskripsi gambar di sini

Ini adalah fitur yang hebat, tetapi tidak terlalu dikenal luas (sebenarnya saya baru saja menemukannya). Saya ingin sesuatu yang sedikit lebih mirip SE, di mana ada opsi yang memungkinkan pengguna tahu untuk menambahkan URL gambar.

Bagaimana saya bisa menambahkan bidang file unggahan ke tab baru di pengunggah media?

Berikut ini adalah tutorial untuk Cara menambahkan tab baru di halaman Media Upload di wordpress , tapi saya ingin menambahkan hanya beberapa teks dan bidang unggahan file ke tab itu. Ada ide? Saya tidak dapat menemukan apa pun di WordPress Codex yang berkaitan dengan fitur ini atau bidang unggahan file secara langsung.

Terima kasih.

Travis Pflanz
sumber
Permintaan fitur termasuk di trac.wordpress.org.
Wyck
2
Bukan permintaan fitur. Fitur ini sudah ada di dalam.
Travis Pflanz
@ TravisPflanz Datangi ini untuk Windows dan berpikir itu jenius - pasti meningkatkan alur kerja saya. Tahu ngomong-ngomong untuk melakukannya di Mac? perintah + shift + g tampaknya tidak mendukung url, tetapi tidak yakin apakah ada perintah lain.
user658182
Keuntungan mengunggah dari url di atas "masukkan url di windows filemanager" adalah bahwa file tersebut dimuat langsung dari sumber ke server wordpress; dalam kasus saya melalui garis pusat-pusat hosting gigabit bukannya pertama-tama diunduh ke pc saya dan kemudian ke wordpress melalui koneksi seluler yang lambat.
Lenne
Trik untuk 'mengunggah' langsung dari URL tidak berfungsi di Windows 10 (di semua peramban yang diuji Firefox, Chrome, IE11), dan mungkin tidak berfungsi di versi Windows sebelumnya sejak 2012. Windows akan mengunduh file dari URL ke lokasi sementara di komputer Anda dan unggah dari sana. Jadi tidak mungkin menggunakan trik ini untuk 'mengunggah' file video besar (untuk mem-bypass respons penyedia HTTP 413 sebelum PHP dan WordPress bahkan melihat-lihat).
Jake

Jawaban:

24

Anda dapat menulis skrip php, atau membuat plugin Anda sendiri dari kode ini di sini, saya menggunakannya di salah satu proyek saya di mana saya harus mengimpor sejumlah besar gambar.

pertama, dapatkan gambarnya, dan simpan di direktori unggah Anda:

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

setelah itu, kita bisa memasukkan gambar ke dalam perpustakaan 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 );

dan voila - kita mulai. Anda juga dapat mengatur berbagai parameter lain di larik lampiran. jika Anda mendapatkan array url atau sesuatu seperti itu, Anda dapat menjalankan skrip dalam satu lingkaran - tetapi perlu diketahui bahwa fungsi gambar membutuhkan banyak waktu dan memori untuk dieksekusi.

fischi
sumber
oh, maaf, saya tidak melihat gambar pada awalnya. mungkin saya akan menulis plugin kecil melakukan hal ini. saya harap Anda bisa akrab dengan skrip saya sejauh ini - saya akan membuat Anda tetap diposting di berita plugin.
fischi
Saya pikir saya menambahkan gambar seperti yang Anda posting. Saya akan melihat lebih mendalam ketika saya kembali dari makan siang. Terima kasih atas bantuan Anda! Selalu dihargai.
Travis Pflanz
penggunaan file_get_contentsdengan URL tidak akan berfungsi jika allow_url_fopendinonaktifkan di php.ini- wp_remote_getakan lebih kompatibel di berbagai lingkungan WP
highvolt
Hai, terima kasih atas jawabannya, untuk apa wp_generate_attachment_metadatadan apa wp_update_attachment_metadata?
gdfgdfg
12

Anda dapat menggunakan fungsi download_url()dan wp_handle_sideload().

download_url()

Unduh url ke file sementara lokal menggunakan WordPress HTTP Class. Harap perhatikan bahwa fungsi panggilan harus memutuskan tautan () file.

wp_handle_sideload()

Menangani sideload, yang merupakan proses mengambil item media dari server lain alih-alih mengunggah media tradisional. Proses ini melibatkan membersihkan nama file, memeriksa ekstensi untuk tipe mime, dan memindahkan file ke direktori yang sesuai dalam direktori unggahan.

Contoh:

// 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
sumber
Saya menggunakan kode ini dan berhasil menambahkan gambar di direktori unggah tetapi ketika saya pergi ke Perpustakaan Media di backend Wordpress saya tidak dapat menemukannya di mana pun dan tidak muncul dalam pencarian. Saya memastikan itu memiliki izin yang benar tetapi masih belum beruntung. Apa alasannya itu tidak muncul?
Nick
Itu tidak akan menambahkan entri di sisi admin. Jika Anda ingin menambahkan entri di admin, maka lebih baik Anda dapat menggunakan, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment atau Anda dapat menggunakannya dengan mengubah variabel global $ _FILES. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli
itu tidak bekerja sama sekali
Cameron A
5

Direktori Plugin WordPress - Ambil & Simpan

Plugin ini memungkinkan Anda untuk mengambil gambar dari url jarak jauh dan menyimpan ke perpustakaan media wordpress Anda sendiri. Dengan melakukannya, Anda tidak pernah khawatir jika gambar jarak jauh dihapus oleh pemiliknya. Ini juga menghemat langkah Anda untuk mengunduh gambar ke komputer lokal dan mengunggah lagi ke wordpress Anda sendiri.

Setelah mengambil gambar, wordpress akan meminta Anda untuk "memasukkan ke dalam posting" atau "mengubah atribut" seperti setelah Anda mengunggah gambar.

Travis Pflanz
sumber
1

Setidaknya ada tiga cara untuk mengimpor gambar jarak jauh ke WordPress:

  1. Grab and Save Plugin , yang disebutkan dalam jawaban lain. Plug-in ini sedikit lebih tua dan menyimpan file secara langsung, sehingga thumbnail dalam berbagai ukuran tidak dibuat. Pembaruan terakhir lebih dari 2 tahun yang lalu pada saat penulisan.

  2. Import External Image Plugin memiliki impor massal untuk gambar-gambar yang terhubung jauh. Anda mungkin perlu meningkatkan batas memori PHP Anda agar ini berfungsi. Pembaruan terakhir lebih dari 2 tahun yang lalu pada saat penulisan.

  3. Simpan & Impor Gambar dari Plugin URL mengimpor gambar menggunakan fungsi asli, sehingga dibuat dengan benar di galeri media dan semua gambar mini dll dibuat. Plugin ini terakhir diperbarui pada tahun 2016 dan berfungsi dengan WordPress 4.7

Pengungkapan: Saya membuat Simpan & Impor Gambar dari Plugin URL

pengguna3096626
sumber