Cum pot să încarc imagini în masă și să creez automat articole pentru fiecare în același timp?

10 sept. 2010, 00:23:01
Vizualizări: 23.5K
Voturi: 10

Știu cum să încarc imagini multiple într-un articol existent, dar acesta este un scenariu diferit. Este vorba despre un catalog mare de resurse, unde fiecare articol de tip custom post-type reprezintă o resursă imagine (astfel o singură imagine este atribuită ca "imagine reprezentativă" pentru fiecare articol).

Întregul sistem funcționează excelent pentru crearea resurselor una câte una, dar este mult prea consumator de timp. Am nevoie să pot încărca "în lot" mai multe imagini simultan, apoi să fie creat câte un articol nou pentru fiecare imagine, și să atașez imaginea la noul articol ca "imagine reprezentativă".

Nu va exista conținut text introdus pentru fiecare articol - doar niște metadate și atribuiri de taxonomie personalizată, așa că ar trebui să fie posibilă atribuirea în lot a metadatelor și taxonomiei în timpul acestui proces de creare în lot.

Am cercetat soluții de la crearea articolelor prin XML-RPC (care de obicei nu gestionează încărcarea/atribuirea imaginilor) până la plugin-uri care preiau fișiere dintr-un director de server în biblioteca media (care nu acoperă crearea articolelor), și încărcătoare jquery pentru fișiere multiple (care practic doar depozitează fișierele într-un director).

Sunt relativ versat în PHP, având experiență în construirea de plugin-uri și teme, dar sunt blocat în ceea ce privește gestionarea acestui proces, deoarece necesită primul pas de a aduce fișierele pe server într-o capacitate temporară, apoi generarea articolelor bazate pe fișierele încărcate și atribuirea unor metadate de identificare întregului lot.

Sper că acest lucru poate fi făcut într-un panou de administrare personalizat, dar dacă trebuie să fac asta în afara wp-admin, e în regulă și așa...

Idei?

5
Comentarii

Ai găsit vreun răspuns la asta? Ar fi perfect pentru mine...

User User
11 apr. 2012 01:08:59

Da... dar scenariul a evoluat într-un întreg plugin framework pentru proiect. Nu este un răspuns scurt anume - ar trebui să documentez fluxul mai multor funcții și hook-uri care împreună realizează acest lucru.

somatic somatic
2 mai 2012 10:45:56

Pe scurt, am făcut de fapt un proces în două etape, din motive editoriale nu avea sens să creez postări pentru tot ce încărca un utilizator. În schimb, utilizatorul încarcă toate imaginile într-un singur post "lot" ca atașamente la acel singur post. Apoi, lotul este revizuit și fiecare atașament este acceptat/respins - iar odată ce acel post "lot" este publicat, o rutină personalizată de salvare preia fiecare atașament acceptat și folosește wp_insert_post() pentru a crea un post cu doar acel singur atașament ca imagine reprezentativă.

somatic somatic
2 mai 2012 10:47:22

De asemenea, un duplicat:

http://wordpress.stackexchange.com/questions/55616/bulk-image-upload-and-one-image-for-each-post

Anoop Chandrika HarisudhanNair Anoop Chandrika HarisudhanNair
11 aug. 2013 12:47:05

Cum adăugați metadatele, cum sunt legate imaginile de date?

Wyck Wyck
11 aug. 2013 16:22:04
Toate răspunsurile la întrebare 3
1

Acest script este o dovadă de concept (testat și funcțional), nu este un plugin și este destinat pentru experimentare. El presupune câteva lucruri:

  1. Folosește wp_insert_post, așa că este recomandat să nu-l atașați la niciun hook de admin, ci să-l rulați o singură dată!
  2. Imaginile trebuie să fie în folderul wp-content\uploads, modificarea acestei căi ar necesita mai multe ajustări. Exemplul folosește un folder personalizat numit \images în directorul uploads, puteți modifica această parte.
  3. Nu face nicio verificare de erori, l-am testat doar pe un folder cu 20 de imagini, așa că rezultatele pot varia :)

Codul de mai jos va itera prin folderul wp-content\uploads\images și va crea un titlu de postare bazat pe numele imaginii atașate. Probabil că veți dori să modificați acest lucru cu ceva mai bun sau să introduceți metadate folosind alte date pe care le aveți (de exemplu, Exif).

function WPSE_1595_image_post() {

    // Trebuie să folosim directorul standard pentru uploads
    $wp_upload_dir =  wp_upload_dir();
    // Folderul efectiv
    $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);

        // Personalizați aceste date de postare după preferințe
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // Avem nevoie de ID pentru atașament
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         // Personalizați aceste date de atașament după preferințe
        $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 );
    }   
}

Pentru orice număr peste câteva mii de imagini, probabil că ar fi mai ușor să folosiți:

14 aug. 2013 08:24:44
Comentarii

Continuă să adauge imagini redimensionate înapoi în folderul upload/images și pentru fiecare dintre ele generează o postare nouă. Procesul a devenit recursiv, așa că înainte să elimin funcția, aproape 800 de postări au fost create. Dimensiunile noi generate ar trebui să fie stocate în locația standard a mediilor din WordPress.

Heena Shah Heena Shah
20 aug. 2017 10:42:19
1

Există acest plugin: Automatic Featured Image Posts Plugin

De pe pagina pluginului:

Automatic Featured Image Posts creează un post nou cu o Imagine Reprezentativă de fiecare dată când o imagine este încărcată. Prin pagina de setări a pluginului, poți configura imaginea să fie publicată și asignată unuia dintre tipurile tale personalizate de postări și/sau formate de postări existente.

Pe scurt, fiecare imagine încărcată generează un post (de tipul ales de tine) și este setată ca imagine reprezentativă pentru acel post.

Am instalat acest plugin pe calculatorul meu local. Pagina de setări arată astfel și îți permite să selectezi cărui tip de postare, inclusiv tipuri personalizate, vrei să fie asignate încărcările de imagini și în ce stare de publicare să fie.

Captură de ecran a pluginului

Pentru a pune pluginul în practică - navighează la tipul de postare ales, deschide o postare nouă și încarcă media.

Pentru încărcare în masă a fotografiilor, selectează mai multe fotografii în caseta de dialog "upload". Aici am selectat 8 fotografii, dar nu văd niciun motiv pentru care nu ar putea fi 80 sau 800, decât dacă există limite necunoscute în încărcătorul de imagini WordPress.

Selectare multiple imagini pentru upload

Titlurile postărilor sunt setate după numele fișierelor imaginilor. Ar trebui să poți lucra cu asta și să le afișezi în tema ta folosind the_title().

Am testat local și funcționează în WordPress 3.6.

Sunt sigur că există modalități mai robuste sau flexibile de a realiza acest lucru, dar în acest caz, pluginul pare să facă exact ce ceri, cu excepția asignării metadatelor. Poate altcineva ar putea completa acea parte.

Dacă ai nevoie de conținut generat dinamic pentru postări, ai putea începe cu acest plugin și apoi itera de acolo. O idee ar fi să folosești formate de postare sau șabloane de pagină pentru a determina cum sunt afișate postările.

Notă: Asigură-te că ai toate dimensiunile image_size setate în functions.php. Nu aș vrea să trebuiască să anulez/șterg 10.000 de fotografii sau să rulez un proces extrem de lung de "regenerare thumbnail-uri" doar pentru că am uitat sau am schimbat dimensiunea imaginilor!

15 aug. 2013 04:23:00
Comentarii

ar trebui să lăsați un comentariu când dați vot negativ - ar fi mult mai util pentru îmbunătățirea calității site-ului.

timshutes timshutes
25 aug. 2013 00:37:42
0

Întrebarea "Curățarea folderului de uploads, structura bazei de date a Bibliotecii Media" conține câteva sugestii de plugin-uri care ar putea fi relevante - deși nu fac exact ceea ce ceri. Dar poate că informațiile sunt utile.

14 sept. 2010 20:39:20