Bagaimana saya bisa mengunggah gambar secara massal dan secara otomatis membuat posting untuk masing-masing secara bersamaan?


10

Saya tahu cara mengunggah banyak gambar ke pos yang ada, tapi ini skenario yang berbeda. Ini untuk katalog besar aset, dengan setiap pos jenis pos khusus mewakili aset gambar (dengan demikian satu gambar ditetapkan sebagai "gambar unggulan" untuk setiap posting).

Seluruh sistem bekerja sangat baik untuk pembuatan aset satu per satu, tetapi terlalu memakan waktu. Saya harus "batch" mengunggah beberapa gambar sekaligus, kemudian membuat posting baru untuk setiap gambar, kemudian melampirkan gambar ke posting baru sebagai "gambar fitur".

Tidak akan ada konten teks yang dimasukkan untuk setiap posting - hanya beberapa tugas metadata dan taksonomi kustom, sehingga mungkin untuk menetapkan batch metadata dan taksonomi selama proses pembuatan batch ini.

Saya telah meneliti solusi dari pembuatan posting XML-RPC (yang biasanya tidak menangani pengunggahan / penugasan gambar) ke plugin yang menarik file dari direktori server ke perpustakaan media (yang tidak mencakup pembuatan posting), dan jquery beberapa file pengunggah (yang pada dasarnya hanya membuang file di direktori).

Saya relatif berpengalaman dalam php, telah membangun plugin dan tema, tapi saya bingung bagaimana menangani proses ini, karena memerlukan langkah pertama untuk mendapatkan file ke server dalam beberapa kapasitas sementara, kemudian menghasilkan posting berdasarkan file mengunggah, dan menugaskan beberapa metadata pengidentifikasi ke seluruh kumpulan.

Saya berharap ini dapat dilakukan di panel admin khusus, tetapi jika saya harus melakukan ini di luar wp-admin, itu juga tidak masalah ...

Ide ide?


Apakah Anda pernah menemukan jawaban untuk ini? Ini akan menjadi sempurna bagi saya ...

Saya melakukan ... tetapi skenario berkembang menjadi plugin kerangka keseluruhan untuk proyek ini. Ini bukan jawaban pendek khusus - saya harus mendokumentasikan aliran berbagai fungsi dan pengait yang secara bersama-sama mencapai ini.
somatik

1
Singkatnya, saya benar-benar membuat proses dua langkah, karena untuk alasan editorial tidak masuk akal untuk benar-benar menelurkan posting untuk semua yang diunggah pengguna. Sebagai gantinya, pengguna mengunggah semua gambar ke satu pos "kumpulan" sebagai lampiran pada satu pos itu. Kemudian, kumpulan ditinjau dan setiap lampiran diterima / ditolak - dan begitu posting "kumpulan" itu benar-benar diterbitkan, rutin penyimpanan kustom mengambil setiap lampiran yang diterima dan menggunakan wp_insert_post () untuk membuat posting hanya dengan satu lampiran sebagai fitur. gambar.
somatik


Bagaimana Anda menambahkan data meta, bagaimana gambar terkait dengan data?
Wyck

Jawaban:


5

Ada plugin ini: Plugin Kiriman Gambar Unggulan Otomatis

Dari halaman plugin:

Posting Gambar Unggulan Otomatis membuat posting baru dengan Gambar Unggulan setiap kali sebuah gambar diunggah. Melalui halaman pengaturan plugin, Anda dapat mengatur gambar untuk menerbitkan dan menetapkan sendiri ke salah satu dari jenis posting kustom Anda yang lain dan / atau format posting.

Pada dasarnya, setiap gambar yang diunggah menghasilkan posting (dari jenis posting yang Anda pilih) dan ditetapkan sebagai gambar unggulan dari posting itu.

Saya menginstal ini di mesin lokal saya. Halaman pengaturan terlihat seperti ini dan memungkinkan Anda untuk memilih jenis posting mana, termasuk jenis posting khusus, Anda ingin menetapkan unggahan foto, dan status publikasi apa yang Anda inginkan.

Cuplikan layar plugin

Untuk menerapkan plugin - arahkan ke jenis posting yang Anda pilih, buka posting baru dan unggah media.

Untuk mengunggah foto secara massal, cukup sorot beberapa foto di kotak dialog "unggah". Saya menyoroti 8 foto di sini, tetapi saya tidak melihat alasan mengapa tidak dapat 80 atau 800, kecuali ada batasan yang saya tidak tahu di pengunggah gambar wordpress.

masukkan deskripsi gambar di sini

Judul tulisan diatur oleh nama file gambar. Anda harus dapat bekerja dengan itu dan memanggil mereka dengan tema Andathe_title()

Saya menguji secara lokal dan berfungsi di Wordpress 3.6.

Saya yakin ada cara yang lebih kuat atau fleksibel untuk melakukan ini, tetapi dalam kasus ini, plugin tampaknya melakukan persis apa yang Anda minta, dengan pengecualian menetapkan meta-data. Mungkin orang lain bisa menyempurnakan bagian itu sedikit.

Jika Anda membutuhkan konten posting yang dihasilkan secara dinamis, Anda setidaknya bisa mulai dengan plugin dan beralih dari sana. Satu pemikiran akan menggunakan format posting atau templat halaman untuk menentukan bagaimana posting ditampilkan.

Catatan: Pastikan Anda memiliki semua yang Anda image_sizeatur di functions.php. Saya benci harus membatalkan / menghapus 10.000 foto, atau menjalankan "regenerasi thumbnail" yang sangat lama hanya karena saya lupa atau mengubah ukuran gambar!


Anda harus berkomentar ketika Anda downvote - akan jauh lebih bermanfaat untuk meningkatkan kualitas situs.
timshutes

5

Script ini adalah bukti konsep (diuji dan berfungsi), ini bukan plugin dan dimaksudkan untuk diretas, ia mengasumsikan beberapa hal:

  1. Menggunakannya wp_insert_postjadi disarankan Anda tidak menghubungkannya ke kait admin, jadi jalankan saja sekali!
  2. Gambar harus ada di wp-content\uploadsfolder, mengubah ini akan memerlukan lebih banyak simpai untuk melompati. Contohnya menggunakan folder khusus yang disebut \imagesdi folder unggah, Anda dapat mengubah bagian ini.
  3. Itu tidak melakukan pengecekan kesalahan, saya hanya mengujinya pada folder dengan 20 gambar sehingga hasilnya mungkin bervariasi :)

Kode di bawah ini akan beralih melalui wp-content\uploads\imagesfolder dan membuat judul posting berdasarkan nama gambar yang dilampirkan padanya. Anda mungkin ingin mengubahnya menjadi sesuatu yang lebih baik atau mungkin memasukkan data meta menggunakan data lain yang Anda miliki (Exif mungkin).

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

Untuk apa pun lebih dari beberapa ribu gambar Anda mungkin akan lebih mudah menggunakan:


Itu terus menambahkan ukuran gambar kembali ke unggah / folder gambar dan untuk itu juga, itu menghasilkan posting baru. Proses menjadi rekursif jadi sebelum saya menghapus fungsi, hampir 800 posting dibuat. Ukuran baru yang dihasilkan harus dilakukan di lokasi media wp biasa.
Heena Shah

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.