URL'den Resim Yükleme


20

SE'nin bir URL'den bir resim yükleme şeklini gerçekten çok seviyorum (birçok kişinin eminim!). Arama yapıyordum, ancak bulamıyorum, WordPress için buna benzer bir eklenti veya yöntem var mı?

Ben bir resim olabilir biliyorum yüklenen ve bir URL'den doğrudan Crunched Eğer Bilgisayardan yükle / Ortam Ekleme >> tıkladıktan sonra >> Dosya Seç Dosya adı kutusu içine resim URL'sini girerek

resim açıklamasını buraya girin

Bu harika bir özellik, ancak çok yaygın olarak bilinmemektedir (aslında sadece keşfettim). Kullanıcının resim URL'sini eklemesini sağlayan bir seçenek olduğu SE gibi biraz daha istiyorum.

Medya yükleyicideki yeni bir sekmeye yalnızca dosya yükle alanını nasıl ekleyebilirim?

İşte wordpress'te Medya Yükleme sayfasında yeni bir sekme nasıl eklenir için bir öğretici , ancak bu sekmeye yalnızca bazı metin ve dosya yükleme alanı eklemek istiyorum. Herhangi bir fikir? WordPress Codex'ta bu özellik veya doğrudan dosya yükleme alanı ile ilgili hiçbir şey bulamadım.

Teşekkürler.


Özellik istekleri trac.wordpress.org'a aittir.
Wyck

2
Özellik isteği değil. Özellik zaten yerleşik.
Travis Pflanz

@TravisPflanz Windows için bununla karşılaştı ve dahice olduğunu düşündüm - iş akışımı kesinlikle geliştirdim. Mac'te bunu zaten biliyor musunuz? command + shift + g URL'leri desteklemiyor gibi görünüyor, ancak başka bir komut olup olmadığından emin değildi.
user658182

URL'den "windows filemanager'da url girin" üzerinden karşıya yükleme avantajı, dosyanın doğrudan kaynaktan wordpress sunucusuna yüklenmesi; barındırma merkezleri üzerinde benim durumumda önce benim pc ve sonra yavaş mobil bağlantı üzerinden wordpress kadar yerine gigabit hattı.
Lenne

Doğrudan bir URL'den 'yükleme' hilesi Windows 10'da çalışmaz (herhangi bir tarayıcıda test edilmiş Firefox, Chrome, IE11) ve 2012'den beri muhtemelen Windows'un önceki sürümlerinde çalışmadı. Windows dosyayı URL'den indirecek geçici bir konuma getirin ve oradan yükleyin. Bu nedenle, bu hileyi büyük video dosyalarını 'yüklemek' için kullanmak mümkün değildir ( PHP ve WordPress'in bir arama yapmadan önce barındırma sağlayıcısının HTTP 413 yanıtını atlamak için).
Jake

Yanıtlar:


24

bir php komut dosyası yazabilir veya bu kodun kendi eklentisini burada yapabilirsiniz, ben çok sayıda görüntü almak zorunda kaldım projelerimden birinde kullandım.

önce görüntüyü alın ve yükleme dizininizde saklayın:

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

bundan sonra, görüntüyü medya kitaplığına ekleyebiliriz:

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

ve voila - işte başlıyoruz. ek dizisinde başka çeşitli parametreler de ayarlayabilirsiniz. bir dizi url veya bunun gibi bir şey varsa, komut dosyasını bir döngüde çalıştırabilirsiniz - ancak resim işlevlerinin yürütülmesi çok zaman ve bellek gerektirdiğini unutmayın.


üzgünüm, ilk başta görüntüyü görmedim. belki tam olarak bunu yapan küçük bir eklenti yazacağım. Ben şimdiye kadar benim senaryo ile birlikte alabilirsiniz umuyoruz - ben eklenti haberleri yayınlanmış tutacak.
fischi

Sanırım resmi senin de paylaştığın gibi ekledim. Öğle yemeğinden döndüğümde daha derinlemesine bir göz atacağım. Yardımınız için teşekkürler! Her zaman takdir.
Travis Pflanz

file_get_contentsURL ile kullanımı allow_url_fopendevre dışı bırakılırsa çalışmaz php.ini- wp_remote_getfarklı WP ortamlarında daha yüksek uyumlu olur
highvolt

Merhaba, teşekkürler cevap için, ne için wp_generate_attachment_metadatave wp_update_attachment_metadata?
gdfgdfg

12

Sen işlevleri kullanabilirsiniz download_url()ve wp_handle_sideload().

download_url()

WordPress HTTP Sınıfını kullanarak bir URL'yi geçici bir yerel dosyaya indirir. Arama işlevinin dosyanın bağlantısını kaldırması () gerektiğini lütfen unutmayın.

wp_handle_sideload()

Geleneksel medya yükleme yerine başka bir sunucudan medya öğesi alma işlemi olan yan yükleri işlemek. Bu işlem, dosya adının sterilize edilmesini, mime türü için uzantıların kontrol edilmesini ve dosyayı uploads dizinindeki uygun dizine taşımayı içerir.

Örnek:

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

}

Bu kodu kullandım ve yüklemeler dizinindeki görüntüyü başarıyla ekledi, ancak Wordpress arka ucundaki Medya Kütüphanem'e gittiğimde hiçbir yerde bulamıyorum ve aramada görünmüyor. Doğru izinlere sahip olduğundan emin oldum ama hala şanslı değilim. Gösterilmemesinin bir nedeni var mý?
Nick

Yönetici tarafına giriş eklemez. Yönetici girişleri eklemek istiyorsanız, wp_insert_attachment (); codex.wordpress.org/Function_Reference/wp_insert_attachment veya $ _FILES genel değişkenini değiştirerek kullanabilirsiniz. media_handle_upload (); codex.wordpress.org/Function_Reference/media_handle_upload
Rajilesh Panoli

hiç çalışmıyor
Cameron A

5

WordPress Eklenti Dizini - Tut ve Kaydet

Bu eklenti, uzak url'den resim almanıza ve kendi wordpress medya kitaplığınıza kaydetmenize olanak tanır. Bunu yaparak, uzak görüntünün sahibi tarafından kaldırıldığından asla endişelenmezsiniz. Bu, görüntüyü yerel bilgisayara indirme ve kendi wordpressinize tekrar yükleme adımlarını da kaydeder.

Görüntüyü yakaladıktan sonra wordpress, tıpkı bir resim yükledikten sonra olduğu gibi "yazıya ekle" veya "nitelikleri değiştirmenizi" isteyecektir.


1

Uzak görüntüleri WordPress'e aktarmanın en az üç yolu vardır:

  1. Diğer cevapta belirtilen Eklentiyi Al ve Kaydet . Bu eklenti biraz daha eski ve dosyayı doğrudan kaydeder, bu nedenle farklı boyutlardaki küçük resimler oluşturulmaz. Son güncelleme tarihi 2 yıldan uzun bir süre önce.

  2. Harici Görüntü Eklentisini İçe Aktar , uzak bağlantılı görüntüler için toplu içe aktarmaya sahiptir. Bunun çalışması için PHP bellek sınırınızı artırmanız gerekebilir. Son güncelleme tarihi 2 yıldan uzun bir süre önce.

  3. Görüntüyü URL Eklentisinden Kaydet ve İçe Aktar Eklentisi görüntüyü yerel işlevler kullanarak içe aktarır, böylece medya galerisinde düzgün bir şekilde oluşturulur ve tüm küçük resimler vb. Yapılır. Bu eklenti en son 2016 yılında güncellenmiştir ve WordPress 4.7 ile çalışır

Açıklama: Görüntüyü URL Eklentisinden Kaydet ve İçe Aktar’ı oluşturdum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.