Görüntüleri toplu olarak nasıl yükleyebilir ve aynı anda her biri için otomatik olarak yayın oluşturabilirim?


10

Mevcut bir gönderiye birden fazla resim nasıl yükleyeceğimi biliyorum, ancak bu farklı bir senaryodur. Bu, büyük bir varlık kataloğu içindir, her özel yazı tipi yazı bir resim varlığını temsil eder (bu nedenle her yazı için "özellikli resim" olarak tek bir resim atanır).

Tüm sistem tek seferde varlık oluşturmak için harika çalışır, ancak çok zaman alıcıdır. "Toplu" bir kerede birden fazla görüntü yüklemek mümkün, daha sonra her görüntü için yeni bir yazı oluşturulan, daha sonra "özellikli görüntü" olarak yeni yazı görüntü eklemek gerekir.

Her gönderi için metin içeriği girilmez - yalnızca bazı meta veriler ve özel sınıflandırma atamaları olacaktır, bu nedenle bu toplu oluşturma işlemi sırasında meta verileri ve sınıflandırmayı toplu olarak atamak mümkün olmalıdır.

XML-RPC yazı oluşturma (genellikle resim yükleme / atama işlemez) çözümlerini bir sunucu dizininden medya kitaplığına (yazı oluşturma işlemini kapsamaz) çeken eklentilere ve jquery çoklu dosyaya çözümler araştırdım yükleyiciler (temelde sadece bir dizindeki dosyaları döker).

Ben eklentileri ve temaları inşa, php nispeten usta, ama ben dosyaları geçici bir kapasitede sunucuya almak için daha sonra dosyaları dayalı mesajlar üreten ilk adım gerektirdiği için, bu işlemin nasıl stumped yüklenir ve tüm toplu işe tanımlayıcı meta veriler atar.

Bunun özel bir yönetici panelinde yapılabileceğini umuyorum, ancak bunu wp-admin dışında yapmak zorunda kalırsam, bu da iyi ...

Fikirler?


Buna bir cevap buldunuz mu? Bu benim için mükemmel olurdu ...

Yaptım ... ama senaryo, proje için tüm bir çerçeve eklentisine dönüştü. Bu kısa bir cevap değil - hep birlikte bunu başaran birden fazla fonksiyonun ve kancaların akışını belgelemeliydim.
somatik

1
Özetle, aslında iki adımlı bir işlem yaptım, çünkü editöryal nedenlerden dolayı, bir kullanıcının yüklediği her şey için gönderileri ortaya çıkarmanın anlamı yoktu. Bunun yerine, kullanıcı tüm resimleri tek bir "toplu" gönderiye bu tek gönderiye ek olarak yükler . Daha sonra, toplu iş incelenir ve her ek kabul edilir / reddedilir - ve bu "toplu" gönderi gerçekten yayınlandıktan sonra, özel bir kaydetme yordamı kabul edilen her eki alır ve öne çıkan tek ekli bir gönderi oluşturmak için wp_insert_post () kullanır görüntüsü.
somatik


Meta verileri nasıl ekliyorsunuz, resimler verilerle nasıl ilişkili?
Wyck

Yanıtlar:


5

Bu eklenti var: Otomatik Öne Çıkan Resim Gönderileri Eklentisi

Eklenti sayfasından:

Otomatik Öne Çıkan Resim Yazıları, her resim yüklendiğinde Öne Çıkan Resim içeren yeni bir yazı oluşturur. Eklenti ayarları sayfasından, görüntüyü yayınlamak ve kendisini mevcut diğer özel yazı türlerinizden ve / veya yazı biçimlerinden birine atayacak şekilde ayarlayabilirsiniz.

Temel olarak, yüklenen her görüntü bir gönderi oluşturur (seçtiğiniz gönderi türünden) ve bu gönderinin öne çıkan görüntüsü olarak ayarlanır.

Bunu yerel makineme kurdum. Ayarlar sayfası şöyle görünür ve özel yazı türleri, fotoğraf yüklemeleri atamak istediğiniz posta türünü ve hangi yayınlama durumunu istediğinizi seçmenize olanak tanır.

Eklentinin ekran görüntüsü

Eklentiyi uygulamaya koymak için - seçtiğiniz gönderi türüne gidin, yeni bir gönderi açın ve medya yükleyin.

Fotoğrafları toplu yüklemek için "yükle" iletişim kutusunda birden fazla fotoğrafı vurgulamanız yeterlidir. Burada 8 fotoğrafı vurguluyorum, ancak wordpress resim yükleyicide bilmediğim sınırlar olmadıkça, neden 80 veya 800 olabileceğine dair bir neden göremiyorum.

resim açıklamasını buraya girin

Mesajların başlıkları görüntü dosyası adlarıyla ayarlanır. Bununla çalışabilmeli ve onları temanızda çağırabilirsiniz.the_title()

Yerel olarak test ettim ve Wordpress 3.6'da çalışıyor.

Bunu başarmak için daha sağlam veya esnek bir yol olduğundan eminim, ancak bu durumda, eklenti meta verileri atama dışında tam olarak sorduğunuz şeyi yapıyor gibi görünüyor. Belki birileri bu parçayı biraz dışarı çıkarabilirdi.

Dinamik olarak oluşturulan yayın içeriğine ihtiyacınız varsa, en azından eklentiyle başlayıp oradan tekrarlayabilirsiniz. Yazıların nasıl görüntüleneceğini belirlemek için yazı biçimlerini veya sayfa şablonlarını kullanmak bir düşünce olacaktır.

Not: Tüm dosyalarınızı image_sizefunction.php dosyasına ayarladığınızdan emin olun . Görüntü boyutunu unuttum veya değiştirdiğim için 10.000 fotoğrafı geri almak / silmek veya son derece uzun bir "küçük resim yeniden oluşturmak" istemekten nefret ediyorum!


indirdiğinizde yorum yapmalısınız - sitenin kalitesini iyileştirmek çok daha yararlı olacaktır.
timshutes

5

Bu senaryo bir kavram kanıtıdır (test edilmiş ve çalışmaktadır), bir eklenti değildir ve hacklenmeyi amaçlamaktadır, birkaç şey varsayar:

  1. Bu wp_insert_postyüzden herhangi bir yönetici kancasına takmamanız tavsiye edilir, bu yüzden sadece bir kez çalıştırın!
  2. Görüntüler wp-content\uploadsklasörde olmalıdır , bunu değiştirmek için daha fazla çember atlamak gerekir. Örnek \images, uploads klasöründe adı verilen özel bir klasör kullanıyor , bu bölümü değiştirebilirsiniz.
  3. Herhangi bir hata kontrolü yapmaz, ben sadece 20 görüntü ile bir klasörde test böylece sonuçlar değişebilir :)

Aşağıdaki kod wp-content\uploads\imagesklasör boyunca yinelenir ve ekli resmin adını temel alan bir yazı başlığı oluşturur. Muhtemelen bunu daha iyi bir şeyle değiştirmek veya sahip olduğunuz diğer verileri kullanarak meta verileri girmek isteyebilirsiniz (Exif belki).

function WPSE_1595_image_post() {

    // We need to use the default uploads dir
    $wp_upload_dir =  wp_upload_dir();
    // The actual folder
    $wp_upload_images = $wp_upload_dir['basedir'] . '/images';

    require_once(ABSPATH . 'wp-admin/includes/image.php');

    foreach (new DirectoryIterator($wp_upload_images) as $fileInfo) {

        if($fileInfo->isDot()) continue;

        $image_base = $fileInfo->getFilename();
        $image_name = pathinfo($fileInfo, PATHINFO_FILENAME);

        //Customize this post data as you wish
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // We need the ID for the attachment
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         //Customize this attachment data as you wish
        $attachment = array(
             'guid' => $wp_upload_dir['url'] . '/' . $image_name, 
             'post_mime_type' => $wp_filetype['type'],
             'post_title' => 'child-' . $image_name,
             'post_content' => '',
             'post_status' => 'inherit'
        );

        $imagefile = $wp_upload_images . '/' . $image_base;
        $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id );
        $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile );

        wp_update_attachment_metadata( $attach_id, $attach_data );
    }   
}

Birkaç binden fazla resim için muhtemelen aşağıdakileri kullanarak daha kolay bir zamanınız olacaktır:


Yeniden yükleme / resim klasörüne yeniden boyutlandırılmış görüntüler eklemeye devam eder ve bunun için yeni yayın oluşturur. İşlem özyinelemeli hale geldi, bu yüzden işlevi kaldırmadan önce yaklaşık 800 gönderi oluşturuldu. Oluşturulan yeni boyutlar normal wp medya konumunda yapılmalıdır.
Heena Shah

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.