Wie kann ich Bilder in großen Mengen hochladen und gleichzeitig automatisch Beiträge für jeden erstellen?

10

Ich weiß, wie man mehrere Bilder in einen vorhandenen Beitrag hochlädt, aber dies ist ein anderes Szenario. Dies gilt für einen großen Katalog von Assets, wobei jeder benutzerdefinierte Beitrag vom Post-Typ ein Bild-Asset darstellt (daher wird jedem Beitrag ein einzelnes Bild als "ausgewähltes Bild" zugewiesen).

Das gesamte System eignet sich hervorragend für die Erstellung einzelner Assets, ist jedoch viel zu zeitaufwändig. Ich muss in der Lage sein, mehrere Bilder gleichzeitig "stapelweise" hochzuladen, dann für jedes Bild einen neuen Beitrag zu erstellen und das Bild dann als "ausgewähltes Bild" an den neuen Beitrag anzuhängen.

Für jeden Beitrag wird kein Textinhalt eingegeben - nur einige Metadaten und benutzerdefinierte Taxonomiezuweisungen. Daher sollte es möglich sein, die Metadaten und Taxonomie während dieses Batch-Erstellungsprozesses stapelweise zuzuweisen.

Ich habe nach Lösungen gesucht, die von der XML-RPC-Nacherstellung (die normalerweise nicht das Hochladen / Zuweisen von Bildern übernimmt) bis zu Plugins reichen, die Dateien aus einem Serververzeichnis in die Medienbibliothek ziehen (die die Nacherstellung nicht abdeckt), und mehrere Dateien abfragen Uploader (die im Grunde nur Dateien in einem Verzeichnis sichern).

Ich bin relativ versiert in PHP, habe Plugins und Themes erstellt, aber ich bin ratlos darüber, wie ich mit diesem Prozess umgehen soll, da es den ersten Schritt erfordert, die Dateien vorübergehend auf den Server zu bringen und dann basierend auf den Dateien Beiträge zu generieren hochgeladen und dem gesamten Stapel einige identifizierende Metadaten zugewiesen.

Ich hoffe, dass dies in einem benutzerdefinierten Admin-Bereich möglich ist, aber wenn ich dies außerhalb von wp-admin tun muss, ist das auch in Ordnung ...

Ideen?

somatisch
quelle
Haben Sie jemals eine Antwort darauf gefunden? Dies wäre perfekt für mich ...
Ich habe es getan ... aber das Szenario hat sich zu einem vollständigen Framework-Plugin für das Projekt entwickelt. Es ist keine besonders kurze Antwort - ich müsste den Fluss mehrerer Funktionen und Hooks dokumentieren, die alle zusammen dies erreichen.
somatisch
1
Zusammenfassend habe ich tatsächlich einen zweistufigen Prozess durchgeführt, da es aus redaktionellen Gründen nicht sinnvoll war, tatsächlich Beiträge für alles zu erstellen, was ein Benutzer hochgeladen hat. Stattdessen lädt der Benutzer alle Bilder als Anhänge zu diesem einzelnen Beitrag in einen einzelnen "Stapel" -Post hoch . Anschließend wird der Stapel überprüft und jeder Anhang wird akzeptiert / abgelehnt. Sobald dieser "Stapel" -Post tatsächlich veröffentlicht wurde, nimmt eine benutzerdefinierte Speicherroutine jeden akzeptierten Anhang und verwendet wp_insert_post (), um einen Beitrag mit nur diesem einzelnen Anhang als Feature zu erstellen Bild.
somatisch
Auch ein Duplikat: wordpress.stackexchange.com/questions/55616/…
Anoop Chandrika HarisudhanNair
Wie fügen Sie die Metadaten hinzu, wie hängen Bilder mit den Daten zusammen?
Wyck

Antworten:

5

Es gibt dieses Plugin: Automatic Featured Image Posts Plugin

Von der Plugin-Seite:

Automatische Beiträge zu vorgestellten Bildern erstellt jedes Mal, wenn ein Bild hochgeladen wird, einen neuen Beitrag mit einem vorgestellten Bild. Über die Seite mit den Plugin-Einstellungen können Sie festlegen, dass das Bild veröffentlicht und einem Ihrer anderen vorhandenen benutzerdefinierten Beitragstypen und / oder Beitragsformate zugewiesen wird.

Grundsätzlich generiert jedes hochgeladene Bild einen Beitrag (des von Ihnen gewählten Beitragstyps) und wird als das vorgestellte Bild dieses Beitrags festgelegt.

Ich habe dies auf meinem lokalen Computer installiert. Auf der Einstellungsseite sehen Sie folgendermaßen aus und können auswählen, welchem ​​Beitragstyp, einschließlich benutzerdefinierter Beitragstypen, Foto-Uploads zugewiesen werden sollen und welchen Veröffentlichungsstatus Sie möchten.

Screenshot des Plugins

Um das Plugin in die Praxis umzusetzen, navigieren Sie zu dem von Ihnen gewählten Beitragstyp, öffnen Sie einen neuen Beitrag und laden Sie Medien hoch.

Um Fotos in großen Mengen hochzuladen, markieren Sie einfach mehrere Fotos im Dialogfeld "Hochladen". Ich hebe hier 8 Fotos hervor, aber ich sehe keinen Grund, warum es nicht 80 oder 800 sein könnte, es sei denn, es gibt Grenzen, die ich im WordPress-Bild-Uploader nicht kenne.

Geben Sie hier die Bildbeschreibung ein

Die Titel der Beiträge werden durch die Bilddateinamen festgelegt. Sie sollten in der Lage sein, damit zu arbeiten und sie in Ihrem Thema mit aufzurufenthe_title()

Ich habe lokal getestet und es funktioniert in Wordpress 3.6.

Ich bin mir sicher, dass es einen robusteren oder flexibleren Weg gibt, dies zu erreichen, aber in diesem Fall scheint das Plugin genau das zu tun, was Sie verlangen, mit Ausnahme der Zuweisung von Metadaten. Vielleicht könnte jemand anderes diesen Teil ein wenig ausarbeiten.

Wenn Sie dynamisch generierten Post-Inhalt benötigen, können Sie zumindest mit dem Plugin beginnen und von dort aus iterieren. Ein Gedanke wäre, Postformate oder Seitenvorlagen zu verwenden, um zu bestimmen, wie die Beiträge angezeigt werden.

Hinweis: Stellen Sie sicher, dass Sie alle image_sizes in functions.php eingestellt haben. Ich würde es hassen, 10.000 Fotos rückgängig machen / löschen oder extrem lange "Miniaturansichten neu generieren" ausführen zu müssen, nur weil ich die Bildgröße vergessen oder geändert habe!

Timshutes
quelle
Sie sollten einen Kommentar abgeben, wenn Sie abstimmen - dies wäre viel hilfreicher, um die Qualität der Website zu verbessern.
Timshutes
5

Dieses Skript ist ein Proof of Concept (getestet und funktioniert), es ist kein Plugin und soll gehackt werden. Es setzt einige Dinge voraus:

  1. Es wird verwendet, wp_insert_postdaher wird empfohlen, es nicht an Admin-Hooks anzuschließen. Führen Sie es also nur einmal aus!
  2. Die Bilder müssen sich im wp-content\uploadsOrdner befinden. Wenn Sie dies ändern, müssen Sie mehr Rahmen durchspringen. Im Beispiel wird ein benutzerdefinierter Ordner verwendet, der \imagesim Upload- Ordner aufgerufen wird. Sie können diesen Teil ändern.
  3. Es wird keine Fehlerprüfung durchgeführt. Ich habe es nur in einem Ordner mit 20 Bildern getestet, sodass die Ergebnisse variieren können :)

Der folgende Code durchläuft den wp-content\uploads\imagesOrdner und erstellt einen Beitragstitel basierend auf dem Namen des angehängten Bildes. Sie möchten dies wahrscheinlich in etwas Besseres ändern oder Metadaten mit anderen Daten eingeben, die Sie haben (Exif vielleicht).

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

Für mehr als ein paar tausend Bilder fällt es Ihnen wahrscheinlich leichter, Folgendes zu verwenden:

Wyck
quelle
Es werden immer wieder vergrößerte Bilder zum Upload- / Bilderordner hinzugefügt, und dafür wird auch ein neuer Beitrag generiert. Der Prozess wurde rekursiv, sodass vor dem Entfernen der Funktion fast 800 Beiträge erstellt wurden. Neue generierte Größen sollten an einem normalen wp-Medienspeicherort erstellt werden.
Heena Shah