it-swarm.asia

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

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

Tüm sistem, bir kerede bir varlık yaratımı için harika çalışıyor ancak çok fazla zaman alıyor. Birden fazla görüntüyü aynı anda "toplu" olarak yükleyebilmem, sonra her görüntü için yeni bir gönderi oluşturmam, sonra görüntüyü "öne çıkan görüntü" olarak yeni gönderiye eklemem gerekiyor.

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

Dosyaları bir sunucu dizininden medya kitaplığına (post oluşturma işlemini içermeyen) çeken eklentilere (genellikle resim yükleme/atama işlemlerini gerçekleştirmeyen) XML-RPC oluşturma oluşturma (çözüm oluşturma işlemlerini üstlenmeyen) ve çoklu dosya jquery çözümlerini araştırdım. yükleyiciler (temelde sadece bir dizine dosya dökmek).

Eklentiler ve temalar oluştururken, php konusunda oldukça ustalaşıyorum, ancak dosyaları geçici bir kapasitede sunucuya almak için ilk adımı ve ardından dosyaları temel alan mesajlar oluşturmayı gerektirdiğinden, bu işlemin nasıl yapılacağına karar verdim yüklendi ve toplu işlemin tamamına bazı tanımlayıcı meta veriler atadı.

Bunun özel bir yönetici panelinde yapılabileceğini umuyorum, ancak bunu wp-admin'in dışında yapmak zorunda kalırsam, sorun değil ...

Fikirler?

10
somatic

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

Eklenti sayfasından:

Otomatik Öne Çıkan Resimli Mesajlar, bir resmin her yüklenişinde Öne Çıkan Resimli yeni bir kayıt oluşturur. Eklenti ayarları sayfasında, görüntüyü kendisini mevcut diğer özel gönderi türlerinden ve/veya gönderi biçimlerinden birine yayınlayacak ve atayacak şekilde ayarlayabilirsiniz.

Temel olarak, yüklenen her resim bir yazı oluşturur (seçtiğiniz yazı türünden) ve o yazıya ait özellikli resim olarak ayarlanır.

Bunu yerel makineme kurdum. Ayarlar sayfası bu şekilde görünür ve özel gönderim türleri de dahil olmak üzere hangi gönderim türlerini, fotoğraf yüklemelerini atamak istediğinizi ve hangi yayınlama durumunu istediğinizi seçmenize olanak tanır.

Screenshot of plugin

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

Toplu fotoğraf yüklemek için "yükle" iletişim kutusundaki birden fazla fotoğrafı vurgulamanız yeterlidir. Burada 8 fotoğraf vurguluyorum, ancak wordpress resim yükleyicide bilmediğim sınırlar olmadığı sürece 80 veya 800 olmama nedenini göremiyorum.

enter image description here

Yazıların başlıkları, görüntü dosyası adları ile belirlenir. Bununla çalışabilmeli ve onları temanızda the_title() ile çağırabilmelisiniz.

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

Bunu başarmak için daha sağlam veya esnek bir yol olduğuna eminim, ancak bu durumda, eklenti meta verileri atamak dışında tam olarak ne istiyorsan onu yapıyor gibi görünüyor. Belki bir başkası bu kısmı biraz parçalayabilir.

Dinamik olarak oluşturulmuş posta içeriğine ihtiyacınız varsa, en azından eklenti ile başlayıp oradan yineleyin. Bir düşüncenin, yazıların nasıl görüntülendiğini belirlemek için posta biçimlerini ya da sayfa şablonlarını kullanmak olacağı düşünülüyordu.

Not: Tüm image_sizes işlevlerinizin function.php içinde olduğundan emin olun. Görüntü boyutunu unuttum ya da değiştirdiğim için 10.000 fotoğrafı geri almak/silmek ya da çok uzun bir "küçük resim oluşturma" yapmak zorunda kalmaktan nefret ediyorum!

5
timshutes

Bu senaryo bir kavramın kanıtıdır (test edilmiş ve çalışmaktadır), bir eklenti değildir ve saldırıya uğraması gerekir, birkaç şeyi varsayar:

  1. wp_insert_post kullanır, bu yüzden herhangi bir yönetici kancasına takmamanız tavsiye edilir, bu yüzden sadece bir kez çalıştırın!
  2. Resimler wp-content\uploads klasöründe olmalıdır, bunun değiştirilmesi, atlamak için daha fazla çember gerektirir. Örnek, uploads klasöründe \images adlı özel bir klasör kullanıyor, bu bölümü değiştirebilirsiniz.
  3. Herhangi bir hata kontrolü yapmıyor, yalnızca 20 resimli bir klasörde test ettim, böylece sonuçlar değişebilir :)

Aşağıdaki kod, wp-content\uploads\images klasöründe yinelenecek ve kendisine eklenen görüntünün adına bağlı bir gönderi başlığı oluşturacaktır. Muhtemelen bunu daha iyi bir şeye değiştirmek istersin veya sahip olduğun diğer verileri kullanarak meta verilerini gir (belki de Exif).

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ç binin üzerindeki görüntü için aşağıdakileri kullanmak daha kolay olacaktır:

5
Wyck

"Temizleme klasörü yükler, Medya Kütüphanesi db yapısı" Question, tam olarak istediğiniz şeyi yapmasanız da, ilgili olabilecek bazı eklenti önerileri sunar. Ama belki bilgi yararlıdır.

1
hakre