Soporte » Plugins y Hacks » WooCommerce » Al subir las imágenes se duplican

  • Muy buenas, estoy utilizando este Array con las URLs de las fotos que quiero subir

    $mi_array = Array(
    [0] => ruta-imagen-1.jpg
    [1] => ruta-imagen-2.jpg
    [2] => ruta-imagen-3.jpg
    [3] => ruta-imagen-4.jpg
    );

    y ejecuto el siguiente código

    if(copy(ruta-imagen-1.jpg, $new_file_path ) ) {
    
                                    $upload_id = wp_insert_attachment( array(
                                        'guid'           => $new_file_path, 
                                        'post_mime_type' => 'image/png',
                                        'post_title'     => preg_replace( '/\.[^.]+$/', '', $id.'-0'),
                                        'post_content'   => '',
                                        'post_status'    => 'inherit'
                                    ), $new_file_path);
                                
                                   
                                    update_post_meta($id_producto, '_thumbnail_id', $upload_id);                        
                                }
    
                                
    
                                    $arr_gallery = Array();
                                    $w = 0;
     //($photo_gallery) Es un array con las imágenes sobrantes (2,3,4 en este caso)
                                    foreach($photo_gallery as $galleyUrl)
                                    {
    
                                        if(copy($galleryUrl, $new_file_path ) ) {
    
                                            $upload_id = wp_insert_attachment( array(
                                                'guid'           => $new_file_path, 
                                                'post_mime_type' => 'image/png',
                                                'post_title'     => preg_replace( '/\.[^.]+$/', '', $id.'-'.$w ),
                                                'post_content'   => '',
                                                'post_status'    => 'inherit'
                                            ), $new_file_path);
                                        
                                            array_push($arr_gallery, $upload_id);
    
                                        }
                                        $w++;
                                    }
                                    update_post_meta($id_producto, '_product_image_gallery', implode(',',$arr_gallery));
                                

    Y me sube las imágenes repetidas, en este caso todas las imágenes son iguales. No se en qué puede estar pasando, voy a la Base de datos y me inserta bien las imágenes en la Base de datos pero a la hora de mostrar las imágenes en la ficha de producto son todas repetidas.

    Gracias de antemano, saludos !!

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • Hola @daviddmas

    Diria que falta codigo, pero independientemente de eso, en ese codigo no compruebas si ya existe la imagen y es posible que sea el causante de la duplicacion, pero es una mera suposicion.

    Iniciador del debate daviddmas

    (@daviddmas)

    Muy buenas, gracias por la respuesta @kallookoo

    Podrías indicarme que código crees que me falta ? (Quitando el si existe la foto o no)

    Veamos, en ese codigo tienes dos variables que aparecen que no estan definidas.
    Son estas dos $new_file_path y $photo_gallery de hay que te dijiese que faltaba codigo.

    Iniciador del debate daviddmas

    (@daviddmas)

    @kallookoo

    $photo_gallery son las 3 últimas imágenes del array (lo indico comentado) y

    $upload_dir_var = wp_upload_dir();
     $new_file_path = $upload_dir_var['path']."/".$id

    el $id es el id de un producto de mi tienda al que pertenece la imagen

    • Esta respuesta fue modificada hace 1 año, 1 mes por daviddmas.
    • Esta respuesta fue modificada hace 1 año, 1 mes por daviddmas.
    Iniciador del debate daviddmas

    (@daviddmas)

    @kallookoo

    Y no hago el condicional de si existe o no (la foto) porque borro todas las fotos de ese producto antes de que se suban las fotos nuevas. Aquí te dejo el código.

    $check[0]->post_id es el id del producto.

    $post_thumbnail_id = get_post_thumbnail_id( $check[0]->post_id  );
    
                                    $gallery_images = get_post_meta($check[0]->post_id , '_product_image_gallery');
    
                                    $gallery = !empty($gallery_images) ? explode(',', $gallery_images[0]) : [];
    
                                    foreach($gallery as $photo)
                                    {
                                        wp_delete_attachment( $photo, true );
                                    }
    
                                    wp_delete_attachment( $post_thumbnail_id, true );
    • Esta respuesta fue modificada hace 1 año, 1 mes por daviddmas.

    Hola @daviddmas

    Veamos, imaginandome todo tu codigo esta claro que añades la imagen dos veces, podria ser justamente porque no compruebas si existe antes y al hacerlo el WordPress hace lo que le pides.
    Si examinas el codigo de la function wp_insert_post usa la ID no la guid para comprobar si existe.

    Lamento decirte que no puedo ayudarte, principlamente porque usas un codigo personalizado. Lo unico que puedo decirte es que examines el core para ver como el WordPress añade imagenes y adaptarlo a tus necesidades.
    Por ejemplo:
    wp-admin/includes/class-custom-background.php

    Saludos y suerte

Viendo 6 respuestas - de la 1 a la 6 (de un total de 6)
  • El debate ‘Al subir las imágenes se duplican’ está cerrado a nuevas respuestas.