¿Cómo puedo subir masivamente imágenes y crear automáticamente publicaciones para cada una al mismo tiempo?


10

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 de publicación 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 muy bien para la creación de activos uno a la vez, pero consume demasiado tiempo. Necesito poder cargar por lotes varias imágenes a la vez, luego crear una nueva publicación para cada imagen, luego adjuntar la imagen a la nueva publicación como la "imagen destacada".

No habrá contenido de texto ingresado para cada publicación, solo algunos metadatos y asignaciones de taxonomía personalizadas, por lo que debería ser posible asignar metadatos y taxonomía por lotes 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) a complementos que extraen archivos de un directorio del servidor a la biblioteca de medios (que no cubre la creación de publicaciones), y jquery múltiples archivos cargadores (que básicamente solo vuelcan archivos en un directorio).

Estoy relativamente versado en php, habiendo creado complementos y temas, pero estoy perplejo sobre 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 los archivos cargado 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 hacer esto fuera de wp-admin, también está bien ...

Ideas?


¿Alguna vez encontraste una respuesta a esto? Esto sería perfecto para mí ...

Lo hice ... pero el escenario se convirtió en un complemento de marco completo para el proyecto. No es una respuesta corta en particular: tendría que documentar el flujo de múltiples funciones y ganchos que, en conjunto, logran esto.
somático

1
En resumen, en realidad hice un proceso de dos pasos, ya que por razones editoriales no tenía sentido generar publicaciones para todo lo que un usuario cargó. En cambio, el usuario carga todas las imágenes en una sola publicación "por lotes" como archivos adjuntos a esa única publicación. Luego, se revisa el lote y se acepta / rechaza cada archivo adjunto, y una vez que se publica esa publicación "lote", una rutina de guardado personalizada toma cada archivo adjunto aceptado y usa wp_insert_post () para crear una publicación con solo ese archivo adjunto como destacado imagen.
somático


¿Cómo agrega los metadatos, cómo se relacionan las imágenes con los datos?
Wyck

Respuestas:


5

Existe este complemento: Complemento automático para 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 publicar y asignarse a uno de sus otros tipos de publicaciones personalizadas existentes y / o formatos de publicaciones.

Básicamente, cada imagen que se carga genera una publicación (del tipo de publicación elegido) 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 qué tipo de publicación, incluidos los tipos de publicación personalizados, a los que desea asignar cargas de fotos y el estado de publicación que desea.

Captura de pantalla del complemento

Para poner en práctica el complemento: navegue hasta el tipo de publicación elegido, abra una nueva publicación y cargue medios.

Para subir fotos en masa, simplemente resalte varias fotos en el cuadro de diálogo "subir". Estoy destacando 8 fotos aquí, pero no veo ninguna razón por la que no puedan ser 80 u 800, a menos que haya límites que no conozco en el cargador de imágenes de WordPress.

ingrese la descripción de la imagen aquí

Los títulos de las publicaciones se establecen mediante los nombres de los archivos de imagen. Debería poder trabajar con eso y llamarlos en su tema conthe_title()

Lo probé localmente y funciona en Wordpress 3.6.

Estoy seguro de que hay una forma más sólida o flexible de lograr esto, pero en este caso, el complemento parece hacer exactamente lo que está pidiendo, con la excepción de asignar metadatos. Tal vez alguien más podría desarrollar esa parte un poco.

Si necesita contenido de publicación generado dinámicamente, al menos podría comenzar con el complemento e iterar desde allí. Uno pensó que habría que usar formatos de publicación o plantillas de página para determinar cómo se muestran las publicaciones.

Nota: Asegúrese de tener todos sus image_sizes configurados en functions.php. ¡Odiaría tener que deshacer / eliminar 10,000 fotos, o ejecutar una "regeneración de miniaturas" extremadamente larga solo porque olvidé o cambié el tamaño de la imagen!


debe comentar cuando haga un voto negativo: sería mucho más útil mejorar la calidad del sitio.
Timshutes

5

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

  1. Se usa, wp_insert_postpor lo que se recomienda que no lo conecte a ningún enlace de administrador, ¡así que simplemente ejecútelo una vez!
  2. Las imágenes deben estar en la wp-content\uploadscarpeta, cambiar esto requeriría más aros para saltar. El ejemplo utiliza una carpeta personalizada llamada \imagesen la carpeta de cargas, 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 siguiente código iterará a través de la wp-content\uploads\imagescarpeta y creará un título de publicación basado en el nombre de la imagen que se adjunta. Probablemente desee cambiar esto a algo mejor o posible 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 los miles de imágenes, probablemente le resulte más fácil usar:


Sigue agregando imágenes redimensionadas a la carpeta de carga / imágenes y para eso también, genera una nueva publicación. El proceso se volvió recursivo, por lo que antes de eliminar la función, se crearon casi 800 publicaciones. Los nuevos tamaños generados deben realizarse en una ubicación de medios wp normal.
Heena Shah

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.