Comment puis-je télécharger des images en masse et créer automatiquement des publications pour chacune en même temps?

10

Je sais comment télécharger plusieurs images dans une publication existante, mais c'est un scénario différent. Il s'agit d'un grand catalogue de ressources, chaque publication de type de message personnalisé représentant une ressource d'image (ainsi, une seule image est affectée en tant qu '"image sélectionnée" pour chaque publication).

L'ensemble du système fonctionne très bien pour la création d'actifs un par un, mais prend beaucoup trop de temps. Je dois être capable de "télécharger" par lots plusieurs images à la fois, puis de créer un nouveau message pour chaque image, puis de joindre l'image au nouveau message en tant qu '"image sélectionnée".

Aucun contenu textuel ne sera saisi pour chaque publication - juste quelques métadonnées et affectations de taxonomie personnalisées, il devrait donc être possible d'affecter par lots les métadonnées et la taxonomie au cours de ce processus de création de lots.

J'ai recherché des solutions de création de post XML-RPC (qui ne gère généralement pas le téléchargement / affectation d'images) aux plugins qui tirent des fichiers d'un répertoire de serveur vers la bibliothèque multimédia (qui ne couvre pas la création de post), et jquery multiple file uploaders (qui ne font que vider des fichiers dans un répertoire).

Je suis relativement versé dans le php, ayant construit des plugins et des thèmes, mais je suis perplexe sur la façon de gérer ce processus, car cela nécessite la première étape pour obtenir les fichiers sur le serveur à titre temporaire, puis générer des publications basées sur les fichiers téléchargés et attribuer des métadonnées d'identification à l'ensemble du lot.

J'espère que cela peut être fait dans un panneau d'administration personnalisé, mais si je dois le faire en dehors de wp-admin, c'est bien aussi ...

Des idées?

somatique
la source
Avez-vous déjà trouvé une réponse à cela? Ce serait parfait pour moi ...
Je l'ai fait ... mais le scénario a évolué en un plugin de framework complet pour le projet. Ce n'est pas une réponse courte particulière - je devrais documenter le flux de plusieurs fonctions et crochets qui, tous ensemble, accomplissent cela.
somatique
1
En résumé, j'ai fait un processus en deux étapes, car pour des raisons éditoriales, il n'était pas logique de générer des messages pour tout ce qu'un utilisateur a téléchargé. Au lieu de cela, l'utilisateur télécharge toutes les images sur un seul article "par lots" en tant que pièces jointes à cet article. Ensuite, le lot est examiné et chaque pièce jointe est acceptée / rejetée - et une fois que le message "lot" est réellement publié, une routine de sauvegarde personnalisée prend chaque pièce jointe acceptée et utilise wp_insert_post () pour créer un message avec uniquement cette pièce jointe comme sa vedette image.
somatique
Aussi un doublon: wordpress.stackexchange.com/questions/55616/…
Anoop Chandrika HarisudhanNair
Comment ajoutez-vous les métadonnées, comment les images sont-elles liées aux données?
Wyck

Réponses:

5

Il y a ce plugin: Plugin automatique de publication d'images en vedette

Depuis la page du plugin:

Les messages d'image sélectionnée automatiques créent un nouveau message avec une image sélectionnée chaque fois qu'une image est téléchargée. Grâce à la page des paramètres du plugin, vous pouvez configurer l'image pour la publier et l'attribuer à l'un de vos autres types et / ou formats de publication personnalisés existants.

Fondamentalement, chaque image téléchargée génère une publication (du type de publication que vous avez choisi) et est définie comme l'image sélectionnée de cette publication.

J'ai installé cela sur ma machine locale. La page des paramètres ressemble à ceci et vous permet de sélectionner le type de publication, y compris les types de publication personnalisés, auquel vous souhaitez attribuer des téléchargements de photos et le statut de publication que vous souhaitez.

Capture d'écran du plugin

Pour mettre le plugin en pratique - accédez au type de publication que vous avez choisi, ouvrez une nouvelle publication et téléchargez le média.

Pour télécharger des photos en masse, mettez simplement en surbrillance plusieurs photos dans la boîte de dialogue "Télécharger". Je surligne 8 photos ici, mais je ne vois aucune raison pour laquelle cela ne pourrait pas être 80 ou 800, sauf s'il y a des limites que je ne connais pas dans l'uploader d'images wordpress.

entrez la description de l'image ici

Les titres des articles sont définis par les noms des fichiers image. Vous devriez pouvoir travailler avec cela et les appeler dans votre thème avecthe_title()

J'ai testé localement et cela fonctionne dans Wordpress 3.6.

Je suis sûr qu'il existe un moyen plus robuste ou flexible pour y parvenir, mais dans ce cas, le plugin semble faire exactement ce que vous demandez, à l'exception de l'attribution de métadonnées. Peut-être que quelqu'un d'autre pourrait étoffer un peu cette partie.

Si vous avez besoin d'un contenu de publication généré dynamiquement, vous pouvez au moins commencer avec le plugin et itérer à partir de là. On pensait qu'il faudrait utiliser des post-formats ou des modèles de page pour déterminer comment les messages sont affichés.

Remarque: assurez-vous que tous vos image_sizeparamètres sont définis dans functions.php. Je détesterais devoir annuler / supprimer 10 000 photos, ou exécuter une «régénération de miniatures» extrêmement longue simplement parce que j'ai oublié ou changé la taille de l'image!

timshutes
la source
vous devriez commenter lorsque vous réduisez votre note - ce serait beaucoup plus utile pour améliorer la qualité du site.
timshutes
5

Ce script est une preuve de concept (testé et fonctionnel), ce n'est pas un plugin et est destiné à être piraté, il suppose quelques choses:

  1. Il utilise wp_insert_postdonc il est conseillé de ne le connecter à aucun hook d'administration, alors lancez-le une fois!
  2. Les images doivent être dans le wp-content\uploadsdossier, changer cela nécessiterait plus de cerceaux pour passer. L'exemple utilise un dossier personnalisé appelé \imagesdans le dossier uploads, vous pouvez changer cette partie.
  3. Il ne fait aucune vérification d'erreur, je ne l'ai testé que sur un dossier avec 20 images donc les résultats peuvent varier :)

Le code ci-dessous parcourt le wp-content\uploads\imagesdossier et crée un titre de publication en fonction du nom de l'image qui lui est attachée. Vous voudrez probablement changer cela en quelque chose de mieux ou possible d'entrer des métadonnées en utilisant d'autres données que vous avez (Exif peut-être).

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

Pour plus de quelques milliers d'images, vous auriez probablement plus de facilité à utiliser:

Wyck
la source
Il continue d'ajouter des images redimensionnées au dossier de téléchargement / images et pour cela aussi, il génère un nouveau message. Le processus est devenu récursif, donc avant de supprimer la fonction, près de 800 postes ont été créés. Les nouvelles tailles générées doivent être effectuées dans un emplacement média wp normal.
Heena Shah