Come posso caricare in massa immagini e creare automaticamente articoli per ciascuna contemporaneamente?

10 set 2010, 00:23:01
Visualizzazioni: 23.5K
Voti: 10

So come caricare più immagini in un articolo esistente, ma questo è uno scenario diverso. Questo è per un grande catalogo di risorse, dove ogni articolo di tipo personalizzato rappresenta una risorsa immagine (quindi una singola immagine viene assegnata come "immagine in evidenza" per ogni articolo).

L'intero sistema funziona alla perfezione per la creazione di risorse una alla volta, ma richiede troppo tempo. Ho bisogno di poter caricare in "batch" più immagini contemporaneamente, quindi far creare un nuovo articolo per ogni immagine, e poi allegare l'immagine al nuovo articolo come "immagine in evidenza".

Non ci sarà contenuto testuale inserito per ogni articolo - solo alcuni metadati e assegnazioni di tassonomie personalizzate, quindi dovrebbe essere possibile assegnare in batch i metadati e la tassonomia durante questo processo di creazione batch.

Ho ricercato soluzioni dalla creazione di articoli XML-RPC (che di solito non gestisce il caricamento/assegnazione delle immagini) ai plugin che prelevano i file da una directory del server alla libreria multimediale (che non copre la creazione di articoli), e uploader di file multipli jquery (che fondamentalmente si limitano a scaricare i file in una directory).

Sono relativamente esperto in PHP, avendo sviluppato plugin e temi, ma sono bloccato su come gestire questo processo, poiché richiede il primo passaggio di portare i file sul server in qualche capacità temporanea, quindi generare articoli basati sui file caricati e assegnare alcuni metadati identificativi all'intero batch.

Spero che questo possa essere fatto in un pannello di amministrazione personalizzato, ma se devo farlo al di fuori di wp-admin, va bene anche così...

Idee?

5
Commenti

Hai mai trovato una risposta a questo? Sarebbe perfetto per me...

User User
11 apr 2012 01:08:59

Sì... ma lo scenario si è evoluto in un plugin framework completo per il progetto. Non è una risposta breve in particolare - dovrei documentare il flusso di più funzioni e hook che insieme raggiungono questo obiettivo.

somatic somatic
2 mag 2012 10:45:56

In sintesi, ho realizzato un processo in due fasi, poiché per motivi editoriali non aveva senso creare effettivamente post per tutto ciò che un utente carica. Invece, l'utente carica tutte le immagini in un singolo post "batch" come allegati a quel singolo post. Poi, il batch viene revisionato e ogni allegato viene accettato/rifiutato - e una volta che quel post "batch" viene effettivamente pubblicato, una routine di salvataggio personalizzata prende ogni allegato accettato e utilizza wp_insert_post() per creare un post con solo quell'allegato come immagine in evidenza.

somatic somatic
2 mag 2012 10:47:22

Anche un Duplicato:

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

Anoop Chandrika HarisudhanNair Anoop Chandrika HarisudhanNair
11 ago 2013 12:47:05

Come stai aggiungendo i metadati, come sono correlate le immagini ai dati?

Wyck Wyck
11 ago 2013 16:22:04
Tutte le risposte alla domanda 3
1

Questo script è una proof of concept (testata e funzionante), non è un plugin ed è pensato per essere modificato, presuppone alcune cose:

  1. Utilizza wp_insert_post quindi si consiglia di non collegarlo a nessun hook di amministrazione, eseguirlo solo una volta!
  2. Le immagini devono essere nella cartella wp-content\uploads, modificare questo richiederebbe più passaggi. L'esempio utilizza una cartella personalizzata chiamata \images nella cartella degli upload, puoi modificare questa parte.
  3. Non effettua alcun controllo degli errori, l'ho testato solo su una cartella con 20 immagini quindi i risultati potrebbero variare:)

Il codice seguente itererà attraverso la cartella wp-content\uploads\images e creerà un titolo del post basato sul nome dell'immagine allegata ad esso. Probabilmente vorrai cambiarlo con qualcosa di meglio o inserire metadati utilizzando altri dati che hai (Exif forse).

function WPSE_1595_image_post() {

    // Dobbiamo usare la directory di upload predefinita
    $wp_upload_dir =  wp_upload_dir();
    // La cartella effettiva
    $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);

        // Personalizza questi dati del post come preferisci
        $my_post_data = array(
            'post_title' => $image_name,
            'post_type' => 'post',
            'post_category' => array('1'),
            'post_author'   => 1,
            'post_status' => 'publish'
        );

        // Abbiamo bisogno dell'ID per l'allegato
        $post_id = wp_insert_post($my_post_data);

        $wp_filetype = wp_check_filetype($image_base, null );

         // Personalizza questi dati dell'allegato come preferisci
        $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 );
    }   
}

Per qualsiasi cosa oltre qualche migliaio di immagini probabilmente sarebbe più facile usare:

14 ago 2013 08:24:44
Commenti

Continua ad aggiungere immagini ridimensionate nuovamente nella cartella upload/images e, per questo, genera anche nuovi articoli. Il processo è diventato ricorsivo, quindi prima di rimuovere la funzione erano stati creati quasi 800 articoli. Le nuove dimensioni generate dovrebbero essere gestite nella posizione standard dei media di WordPress.

Heena Shah Heena Shah
20 ago 2017 10:42:19
1

C'è questo plugin: Plugin Automatic Featured Image Posts

Dalla pagina del plugin:

Automatic Featured Image Posts crea un nuovo post con un'immagine in evidenza ogni volta che viene caricata un'immagine. Tramite la pagina delle impostazioni del plugin, puoi impostare l'immagine per la pubblicazione e assegnarla a uno dei tuoi tipi di post personalizzati esistenti e/o ai formati di post.

In sostanza, ogni immagine caricata genera un post (del tipo di post scelto) e viene impostata come immagine in evidenza di quel post.

L'ho installato sulla mia macchina locale. La pagina delle impostazioni appare così e ti permette di selezionare a quale tipo di post, inclusi i tipi di post personalizzati, vuoi assegnare i caricamenti di foto, e lo stato di pubblicazione desiderato.

Screenshot del plugin

Per mettere in pratica il plugin - naviga verso il tuo tipo di post scelto, apri un nuovo post e carica i media.

Per caricare foto in blocco, basta selezionare più foto nella finestra di dialogo "carica". Qui sto selezionando 8 foto, ma non vedo motivi per cui non potrebbero essere 80 o 800, a meno che non ci siano limiti che non conosco nel caricatore di immagini di WordPress.

Descrizione dell'immagine

I titoli dei post sono impostati dai nomi dei file delle immagini. Dovresti essere in grado di lavorarci e richiamarli nel tuo tema con the_title()

Ho testato localmente e funziona in WordPress 3.6.

Sono sicuro che ci sia un modo più robusto o flessibile per ottenere questo risultato, ma in questo caso, il plugin sembra fare esattamente quello che chiedi, con l'eccezione dell'assegnazione di meta-dati. Forse qualcun altro potrebbe approfondire quella parte.

Se avessi bisogno di contenuti di post generati dinamicamente, potresti almeno iniziare con il plugin e iterare da lì. Un'idea sarebbe usare i formati di post o i template di pagina per determinare come i post vengono visualizzati.

Nota: Assicurati di avere tutte le tue dimensioni image_size impostate in functions.php. Odio dover annullare/eliminare 10.000 foto, o eseguire un "rigenera miniature" estremamente lungo solo perché ho dimenticato o cambiato la dimensione dell'immagine!

15 ago 2013 04:23:00
Commenti

dovresti commentare quando voti negativamente - sarebbe molto più utile per migliorare la qualità del sito.

timshutes timshutes
25 ago 2013 00:37:42
0

La domanda "Pulizia della cartella degli upload, struttura del database della Media Library" contiene alcuni suggerimenti di plugin che potrebbero essere correlati - anche se non esattamente ciò che stai chiedendo. Ma forse le informazioni possono essere utili.

14 set 2010 20:39:20