es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar la selección de variaciones en Woo-commerce a la página de archivo de productos?

Recientemente comencé a trabajar en un sitio web de Frutas y Vegetales (Estoy utilizando Woocommerce, Elementor y Hello Theme).

Estoy tratando de dar al usuario la opción de seleccionar variaciones del producto en la Página de Archivo, no solo en la página del producto. También agregando una opción de cantidad a la página de archivo. Eso lo he logrado utilizando el siguiente código.

Hay imágenes que ilustran lo que estoy tratando de crear:

View post on imgur.com

View post on imgur.com

Hasta ahora he logrado agregar la selección de cantidad en la página de archivo de productos usando este código:

add_filter( ‘woocommerce_loop_add_to_cart_link’, ‘quantity_inputs_for_woocommerce_loop_add_to_cart_link’, 10, 2 );
function quantity_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
if ( $product && $product->is_type( ‘simple’ ) && $product->is_purchasable() && $product->is_in_stock() && ! $product->is_sold_individually() ) {
$html = ‘

‘ . esc_html( $product->add_to_cart_text() ) . ‘‘;
$html .= ‘

‘;
}
return $html;
}

La parte restante es crear 2 productos variables.
El primer producto es una Manzana individual por 1USD.
El segundo producto es un paquete de manzanas por 5USD por KG.

Y, anular o crear un código que muestre la selección en la página de “productos de archivo” y no en la página de “producto”.

Suponiendo que algunos ajustes en el código original podrían crear eso también.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear 2 productos variables, se pueden seguir los siguientes pasos:

    1. Ir a Productos > Añadir Producto en el panel de WordPress.
    2. Establecer el tipo de producto como producto variable.
    3. Añadir atributos para cada una de las variaciones. En este caso, añadir “Cantidad” como atributo de variación con los valores “Individual” y “Paquete”.
    4. Añadir variaciones para cada combinación de atributos. Por ejemplo, para el valor de atributo “Individual”, establecer el precio en 1USD y para el valor de atributo “Paquete”, establecer el precio en 5USD por KG.
    5. Guardar el producto.

    Para mostrar la selección en la página “archivo de productos”, no en la página “producto”, se puede usar el siguiente código:

    add_filter( 'woocommerce_loop_add_to_cart_link', 'variation_inputs_for_woocommerce_loop_add_to_cart_link', 10, 2 );
    function variation_inputs_for_woocommerce_loop_add_to_cart_link( $html, $product ) {
        if ( $product->is_type( 'variable' ) && $product->is_purchasable() && $product->is_in_stock() ) {
            $attributes = $product->get_variation_attributes();
            $selected_attributes = array();
            foreach ( $attributes as $attribute ) {
                $attribute_slug = sanitize_title( $attribute );
                $selected_value = isset( $_REQUEST[ 'attribute_' . $attribute_slug ] ) ? sanitize_title( wc_clean( wp_unslash( $_REQUEST[ 'attribute_' . $attribute_slug ] ) ) ) : '';
                $selected_attributes[ $attribute_slug ] = $selected_value;
            }
            $variations = $product->get_available_variations();
            foreach ( $variations as $variation ) {
                $variation_match = true;
                foreach ( $selected_attributes as $attribute_slug => $selected_value ) {
                    if ( ! isset( $variation['attributes'][ 'attribute_' . $attribute_slug ] ) || $variation['attributes'][ 'attribute_' . $attribute_slug ] !== $selected_value ) {
                        $variation_match = false;
                        break;
                    }
                }
                if ( $variation_match ) {
                    $html = '<form action="' . esc_url( $variation['add_to_cart_url'] ) . '" class="cart" method="post" enctype="multipart/form-data">';
                    $html .= woocommerce_quantity_input( array(), $product, false );
                    $html .= '<button type="submit" class="button alt">' . esc_html( $product->add_to_cart_text() ) . '</button>';
                    $html .= '<input type="hidden" name="variation_id" value="' . absint( $variation['variation_id'] ) . '">';
                    $html .= '</form>';
                    break;
                }
            }
        }
        return $html;
    }
    

    Este código añadirá la capacidad de seleccionar variaciones del producto en la página de archivo, no sólo en la página del producto, como se muestra en las imágenes proporcionadas.

Comments are closed.