¿Cómo puedo cargar imágenes de forma masiva y crear publicaciones para cada una al mismo tiempo?

9

Sé cómo cargar varias imágenes en una publicación existente, pero este es un escenario diferente. Esto es para un gran catálogo de activos, con cada publicación de tipo post personalizada que representa un activo de imagen (por lo tanto, se asigna una sola imagen como la "imagen destacada" para cada publicación).

Todo el sistema funciona de forma excelente para la creación de activos de una en una, pero consume demasiado tiempo. Necesito poder "cargar" varias imágenes a la vez, luego crear una nueva publicación para cada imagen y luego adjuntar la imagen a la nueva publicación como la "imagen destacada".

No se ingresará contenido de texto para cada publicación, solo algunos metadatos y asignaciones de taxonomía personalizadas, por lo que debería ser posible asignar por lotes los metadatos y la taxonomía durante este proceso de creación de lotes.

He investigado soluciones desde la creación de publicaciones XML-RPC (que generalmente no maneja la carga / asignación de imágenes) hasta complementos que extraen archivos de un directorio de servidores a la biblioteca de medios (que no cubre la creación de publicaciones), y jquery múltiples cargadores de archivos (que básicamente solo vuelcan archivos en un directorio).

Estoy relativamente versado en php, habiendo creado plugins y temas, pero estoy perplejo en cómo manejar este proceso, ya que requiere el primer paso para llevar los archivos al servidor con cierta capacidad temporal y luego generar publicaciones basadas en en los archivos cargados, y asignando algunos metadatos de identificación a todo el lote.

Espero que esto se pueda hacer en un panel de administración personalizado, pero si tengo que hacerlo fuera de wp-admin, también está bien ...

Ideas?

    
pregunta somatic 09.09.2010 - 23:23

3 respuestas

5

Hay este complemento: Complemento automático de publicaciones de imágenes destacadas

Desde la página del complemento:

  

Las publicaciones automáticas de imágenes destacadas crean una nueva publicación con una imagen destacada cada vez que se carga una imagen. A través de la página de configuración del complemento, puede configurar la imagen para que se publique y asignarse a uno de sus otros tipos de publicaciones y / o formatos de publicación personalizados existentes.

Básicamente, cada imagen que se carga genera una publicación (del tipo de publicación que eligió) y se establece como la imagen destacada de esa publicación.

Instalé esto en mi máquina local. La página de configuración tiene este aspecto y le permite seleccionar el tipo de publicación, incluidos los tipos de publicación personalizados, a la que desea asignar cargas de fotos y el estado de publicación que desea.

Paraponerenprácticaelcomplemento:naveguehastaeltipodepublicaciónqueeligió,abraunanuevapublicaciónycarguelosmedios.

Parasubirfotosagranel,simplementeresaltevariasfotosenelcuadrodediálogo"subir". Aquí estoy destacando 8 fotos, pero no veo ninguna razón por la que no puedan ser 80 u 800, a menos que haya límites que no conozca en el cargador de imágenes de wordpress.

Losnombresdelosarchivosdeimagenestablecenlostítulosdelaspublicaciones.Deberíapodertrabajarconesoyllamarlosasutemaconthe_title()

LoprobélocalmenteyestáfuncionandoenWordpress3.6.

Estoysegurodequehayunaformamásrobustaoflexibledelograresto,peroenestecaso,elcomplementoparecehacerexactamenteloqueestápidiendo,conlaexcepcióndelaasignacióndemetadatos.Talvezalguienmáspuedacompletaresaparteunpoco.

Sinecesitabacontenidodepublicacióngeneradodinámicamente,almenospodríacomenzarconelcomplementoeiterardesdeallí.Unaideaseríautilizarpost-formatosoplantillasdepáginaparadeterminarcómosemostraránlaspublicaciones.

Nota:Asegúresedetenertodosuimage_sizesconfiguradoenfunctions.php.¡Odiaríatenerquedeshacer/eliminar10,000fotosoejecutaruna"regeneración de miniaturas" extremadamente larga solo porque olvidé o cambié el tamaño de la imagen!

    
respondido por el timshutes 15.08.2013 - 03:23
4

Este script es una prueba de concepto (probado y en funcionamiento), no es un complemento y está destinado a ser pirateado, asume algunas cosas:

  1. Utiliza wp_insert_post por lo que se recomienda que no lo conectes en ningún enlace de administración, ¡así que solo ejecútalo una vez!
  2. Las imágenes deben estar en la carpeta wp-content\uploads , cambiar esto requerirá más aros para saltar. El ejemplo utiliza una carpeta personalizada llamada \images en la carpeta de subidas, puede cambiar esta parte.
  3. No realiza ninguna comprobación de errores, solo lo probé en una carpeta con 20 imágenes, por lo que los resultados pueden variar :)

El código a continuación recorrerá la carpeta wp-content\uploads\images y creará un título de publicación basado en el nombre de la imagen que se le adjunta. Probablemente desee cambiar esto por algo mejor o, posiblemente, ingresar metadatos utilizando otros datos que tenga (tal vez Exif).

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

Para cualquier cosa que supere unos pocos miles de imágenes, probablemente te resulte más fácil usar:

respondido por el Wyck 14.08.2013 - 07:24
1

La "Carpeta de archivos de limpieza, estructura de la biblioteca de medios" La pregunta tiene algunas sugerencias de complementos que pueden estar relacionadas, aunque no es exactamente lo que hace lo que pide. Pero tal vez la información sea útil.

    
respondido por el hakre 14.09.2010 - 19:39

Lea otras preguntas en las etiquetas