Variaciones Sku no aparece WordPress/woocommerce

6 minutos de lectura

He creado una tienda de woocommerce y agrego algunas variaciones a algunos productos. Cada variación tiene su propio número de SKU, pero por alguna razón no se muestran en el panel de descripción general de los productos. ¿Hay alguna forma en que pueda agregarlos o alguien pueda mostrarme la dirección correcta a seguir? Además, si trato de buscar la variación, no aparece el producto donde se encuentra. ¿Tengo que registrar el sku de variación en algún lugar? ¿Viene esto por defecto con woocommerce o no?

¡Gracias!

ingrese la descripción de la imagen aquí

Así es como he configurado las variaciones:

ingrese la descripción de la imagen aquí

  • Creo que está usando guiones bajos en SKU, esa es la razón por la cual sus productos no muestran SKU.

    – Jaswinder Kaur

    19 de octubre de 2015 a las 11:14

  • Nop… hay productos con _ y son productos simples y salen.. y hay productos con _ y sin eso, como productos variables y no salen…

    – Mario Sánchez Maselli

    20 de octubre de 2015 a las 13:28

  • Solicitud de cierre de pregunta [Flag] ya que no tiene nada que ver con los problemas de código. Incluso la persona que pregunta no está activa en las respuestas de problemas.

    – Navnish Bhardwaj

    20 de octubre de 2015 a las 13:34


  • Si no sabe la respuesta, no significa que no esté relacionada con el código. Encontré este error abierto en githubhttps://github.com/woothemes/woocommerce/issues/1734

    – Mario Sánchez Maselli

    20/10/2015 a las 18:50

avatar de usuario
Mario Sánchez Maselli

Ok, dado que nadie vino con una respuesta, tuve que investigar un poco yo mismo: D Así que aquí está la solución que encontré por el momento.

En el archivo class-wc-admin-post-types.php que se encuentra en woocommerce/includes/admin

Tienes que modificar algún código en la línea 277

case 'sku' :

    $type = (get_class($the_product));

    if( $type == 'WC_Product_Variable' ){

        $available_variations = $the_product->get_available_variations();

        echo '<strong> Variations: </strong>' . count($available_variations) . '<br><br>';

        for ($i = 0; $i <  count($available_variations); $i++ ) {

            echo ($available_variations[$i]['sku']) . '<br>';
        }
    }
    else {
        echo $the_product->get_sku() ? $the_product->get_sku() : '<span class="na">&ndash;</span>';
    }
break;

Y ahora puede obtener algo como esto: cuando tenga variaciones en su producto, mostrará la cantidad de variaciones y todos los sku disponibles y, si no es un producto variable, solo mostrará el sku.

Ahora estoy pensando en que probablemente modificaré también la columna de existencias y mostraré la cantidad de existencias en cada una de ellas.

Espero que esto ayude a alguien más. ¡Y gracias por los que intentaron ayudar!

ingrese la descripción de la imagen aquí

Ok… entonces agregué el soporte para stock, nada muy diferente al código anterior… Entonces, en el mismo documento ahora en la línea 344, puede agregar esto.

case 'is_in_stock' :

            $type = (get_class($the_product));

            if( $type == 'WC_Product_Variable' ){

                $available_variations = $the_product->get_available_variations();

                echo '<strong> Variations stock: </strong> <br><br>';

                for ($i = 0; $i <  count($available_variations); $i++ ) {


                    if ( $available_variations[$i]['is_in_stock'] == 0 ) {
                        echo '<mark class="outofstock">' . __( 'Out of stock', 'woocommerce' ) . '</mark>';
                    }else {

                        echo '<mark class="instock">' . __( 'In stock', 'woocommerce' ) . '</mark>';

                    }
                    if ($available_variations[$i]['variation_is_active']) {
                        echo ' &times; ' . $available_variations[$i]['max_qty'] . '<br>' ;
                    }
                }
            } else {

                if ( $the_product->is_in_stock() ) {
                    echo '<mark class="instock">' . __( 'In stock', 'woocommerce' ) . '</mark>';
                } else {
                    echo '<mark class="outofstock">' . __( 'Out of stock', 'woocommerce' ) . '</mark>';
                }

                if ( $the_product->managing_stock() ) {
                    echo ' &times; ' . $the_product->get_total_stock() ;

                }
            }
            break;   

Y obtienes algo como esto:

ingrese la descripción de la imagen aquí

Para obtener más información, consulte el enlace a continuación. Resumen: este enfoque puede tener algunos problemas de rendimiento… tenga cuidado con cuántas variaciones de productos tiene.

https://github.com/woothemes/woocommerce/issues/9396

avatar de usuario
manan mian

add_action( 'woocommerce_single_product_summary', 'dev_designs_show_sku', 5 );
function dev_designs_show_sku(){
    global $product;

    if ( $product->is_type( 'variable' ) ) {
      $available_variations = $product->get_available_variations();
      for ($i = 0; $i <  count($available_variations); $i++ ) {    
          echo 'SKU: ' . ($available_variations[$i]['sku']) . '<br>';
      }
    } else {
      echo 'SKU: ' . $product->get_sku();
    }
}

  • Bienvenido a SO. Si bien este código puede responder la pregunta del OP, es mejor incluir contexto o razonamiento sobre por qué/cómo esto resuelve el problema. Esto ayudará a los futuros visitantes a aprender de su publicación y aplicarla a sus propios problemas, y mantiene a SO como una ubicación de alto valor para encontrar soluciones a problemas de programación. Por favor edit si puedes agregar algo de información adicional. ¡Gracias por tu contribución!

    – SherylHohman

    6 de febrero de 2020 a las 21:13

Simplemente elimine la verificación condicional IF que rodea el HTML fuera del SKU del archivo meta.php. Alrededor de la LÍNEA 18.

El archivo está en la carpeta de complementos/plantillas de WC.

O

solo de this -> $product->get_sku() De la declaración IF ya que eso está causando el problema.

Devuelve una cadena vacía, es por eso que el IF condicional nunca se cumple.

Además, la razón por la que esto sucede es que si el producto principal no tiene un SKU y solo sus variables lo tienen, se producirá este problema. Por lo tanto, mi comentario en la parte superior indica que devuelve una cadena vacía mientras intenta extraer primero del padre. en otras palabras, si ha configurado SKU para el padre y las variables, todo funcionará incluso sin modificar el código que mencioné.

  • el archivo del que está hablando meta.php es para mostrar el sku en la vista de un solo producto… Estoy hablando del backend… las imágenes de arriba. Como puede ver, solo aparece un ku en los productos individuales, pero hay un espacio vacío en los productos variables.

    – Mario Sánchez Maselli

    20/10/2015 a las 13:25

  • ¿Qué has hecho hasta ahora para arreglar esto? No creo que esto sea relevante para codificar de ninguna manera. Puede ser que te estés saltando la instalación. Como ves nuestra aportación en WooCommerce [github.com/dreamyourcareer/woocommerce] No estamos enfrentando ningún problema como ese.

    – Navnish Bhardwaj

    20/10/2015 a las 13:32

  • este enlace no va a ninguna parte

    – Mario Sánchez Maselli

    21 de octubre de 2015 a las 8:37

  • Está yendo al Repositorio de WooCommerce. ¿Tiene alguna idea sobre cómo obtener ayuda de GitHub o cómo la han usado?

    – Navnish Bhardwaj

    21/10/2015 a las 11:10

¿Ha sido útil esta solución?