¿Cómo obtener las imágenes de la galería de productos en WooCommerce?

20 ago 2017, 09:54:26
Vistas: 47.2K
Votos: 10

Busco un código que pueda ayudarme a obtener la lista de imágenes de la galería presentes en un producto de WooCommerce.

Las necesito para poder usarlas en un diseño personalizado de página individual para la página de producto de WooCommerce.

0
Todas las respuestas a la pregunta 3
3
22
<?php
$product_id = '14';
$product = new WC_product($product_id);
$attachment_ids = $product->get_gallery_image_ids();

foreach( $attachment_ids as $attachment_id ) 
    {
      // Mostrar la URL de la imagen
      echo $Original_image_url = wp_get_attachment_url( $attachment_id );

      // Mostrar la imagen en lugar de la URL
      echo wp_get_attachment_image($attachment_id, 'full');

    }?>
1 dic 2019 22:19:31
Comentarios

Deberías intentar explicar tu código, sería de ayuda.

RiddleMeThis RiddleMeThis
1 dic 2019 23:57:42

OK, claro que puedo hacerlo.

Md.Mehedi hasan Md.Mehedi hasan
2 dic 2019 00:06:51

Esta es la respuesta más fácil y mejor.

RiotAct RiotAct
11 dic 2019 02:48:39
0

El método get_gallery_image_ids() en el producto devolverá un array de IDs de imágenes.

global $product;
$gallery_images = $product->get_gallery_image_ids();

Luego puedes usar funciones como wp_get_attachment_image() para cada ID y obtener HTML/URLs, etc.

20 ago 2017 11:35:48
0

Esta es la función completa si deseas todas las imágenes de la galería, incluyendo la imagen principal:

    public function getAllProducts( $request ){
    $products = new WP_Query([
        'post_type' => 'post'//,
            //'show_product_on_only_premium' => 'yes',
        ]);

    $args = array(
        'status' => 'publish',
    );
    $products = wc_get_products( $args );
    $tempArr = [];
    foreach($products as $product){
        $product_obj = json_decode($product-> __toString());
        $product_obj->img_src = wp_get_attachment_image_src($product_obj->image_id)[0];
        $images_ids = $product-> get_gallery_image_ids();

        $images_arr = [];
        for($i = 0, $j = count($images_ids); $i < $j;$i++ ){
            $image_query = wp_get_attachment_image_src($images_ids[$i]);
            $img = new StdClass;
            $img->src = $image_query[0];
            array_push($images_arr, $img);
        }
        $product_obj->gallery = $images_arr;
        array_push($tempArr, $product_obj);
    }
    return $tempArr;
} 

Y si quieres las variaciones: de: https://gist.github.com/Niloys7/17b88d36c1c38844a6cf2127c15dee63

<?php
global $product;
$attachment_ids = $product->get_gallery_attachment_ids();

foreach( $attachment_ids as $attachment_id ) 
{
  //Obtener URL de las imágenes de la galería - tamaños de imagen predeterminados de WordPress
  echo $Original_image_url = wp_get_attachment_url( $attachment_id );
  echo $full_url = wp_get_attachment_image_src( $attachment_id, 'full' )[0];
  echo $medium_url = wp_get_attachment_image_src( $attachment_id, 'medium' )[0];
  echo $thumbnail_url = wp_get_attachment_image_src( $attachment_id, 'thumbnail' )[0];

  //Obtener URL de las imágenes de la galería - tamaños de imagen específicos de WooCommerce
  echo $shop_thumbnail_image_url = wp_get_attachment_image_src( $attachment_id, 'shop_thumbnail' )[0];
  echo $shop_catalog_image_url = wp_get_attachment_image_src( $attachment_id, 'shop_catalog' )[0];
  echo $shop_single_image_url = wp_get_attachment_image_src( $attachment_id, 'shop_single' )[0];

  //Mostrar imagen en lugar de URL
  echo wp_get_attachment_image($attachment_id, 'full');
  echo wp_get_attachment_image($attachment_id, 'medium');
  echo wp_get_attachment_image($attachment_id, 'thumbnail');
  echo wp_get_attachment_image($attachment_id, 'shop_thumbnail');
  echo wp_get_attachment_image($attachment_id, 'shop_catalog');
  echo wp_get_attachment_image($attachment_id, 'shop_single');
}
?>
14 ago 2018 02:33:32