Avisos
Vaciar todo

No se muestra el precio en un producto variable

4 Respuestas
3 Usuarios
0 Reactions
29 Visitas
Respuestas: 61
Trusted Member
Topic starter
 

Buenos días, estoy teniendo un grave problema con los productos de un cliente, en la imagen que acabo de compartir podrán ver el precio superior y el inferior cuando se selecciona la variación de un producto, el gran problema es que en la parte superior no se actualiza el precio cuando se selecciona un producto (queda en $900 que es el mínimo costo de un producto), podrán ver que en el precio inferior se muestra $1500 (el valor real del producto seleccionado) pero arriba no y esto hace que los clientes se confundan. Me gustaría saber cómo eliminar el precio inferior y que al seleccionar cualquier variación del producto, el precio se actualice en la parte superior (1er rectángulo rojo superior de la imagen). Gracias.

 

Enlace del producto de referencia:  https://www.humita.com.mx/producto/peach/

Firefox Screenshot 2022 10 14T05 35 12.258Z

Contenido solo visible a usuarios registrados


 
Respondido : 14/10/2022 5:44 am
Pepe
 Pepe
Respuestas: 41108
Illustrious Member Admin
 

Hola Leonardo.

El rango de precios mostrara el precios mas bajo y el mas alto, por defecto esos precios no cambian pero bueno vamos aprobar algo a ver si podemos hacer que se modifique:

.- Elimina el código que pusimos en la consulta que hiciste para añadir el texto:

-> https://www.webempresa.com/foro/administracion-wordpress/no-puedo-cambiar-un-texto-con-loco-translate

 

.- Añade lo siguiente al final del archivo functions.php


add_action( 'woocommerce_variable_add_to_cart', 'we_actualizar_precio_con_variación_precio' );

function we_actualizar_precio_con_variación_precio() {
global $product;
$price = $product->get_price_html();
wc_enqueue_js( "
$(document).on('found_variation', 'form.cart', function( event, variation ) {
if(variation.price_html) $('.summary > p.price').html(variation.price_html);
$('.woocommerce-variation-price').hide();
});
$(document).on('hide_variation', 'form.cart', function( event, variation ) {
$('.summary > p.price').html('" . $price . "');
});
" );
}

 

Un Saludo


 
Respondido : 14/10/2022 9:01 am
Respuestas: 61
Trusted Member
Topic starter
 

He realizado los pasos que me ha compartido y colocado el código en la siguiente dirección: /home/humitaco/public_html/wp-content/themes/Divi/functions.php pero sólo se oculta el precio inferior, sin embargo, el precio superior no muestra el precio actualizado (los $1500) al seleccionar CAJAS: 1 y PUFFS: 1500, envío capture para que puedan verlo.

Firefox Screenshot 2022 10 14T11 07 41.969Z

 


 
Respondido : 14/10/2022 11:12 am
Respuestas: 18649
Soporte CMS Webempresa
 

Hola Leonardo, 

En este caso prueba eliminar el código anterior y añade los siguientes, si utilizar un plugin como code snippets puede añadir diferentes fragmentos de código y no directamente en el archivo function.php 

En el primero fragmento de código añade este

//Ocultar rando de precios en productos variales
add_filter( 'woocommerce_variable_sale_price_html',
'lw_variable_product_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html',
'lw_variable_product_price', 10, 2 );

function lw_variable_product_price( $v_price, $v_product ) {

// Product Price
$prod_prices = array( $v_product->get_variation_price( 'min', true ),
$v_product->get_variation_price( 'max', true ) );
$prod_price = $prod_prices[0]!==$prod_prices[1] ? sprintf(__('From: %1$s', 'woocommerce'),
wc_price( $prod_prices[0] ) ) : wc_price( $prod_prices[0] );

// Regular Price
$regular_prices = array( $v_product->get_variation_regular_price( 'min', true ),
$v_product->get_variation_regular_price( 'max', true ) );
sort( $regular_prices );
$regular_price = $regular_prices[0]!==$regular_prices[1] ? sprintf(__('From: %1$s','woocommerce')
, wc_price( $regular_prices[0] ) ) : wc_price( $regular_prices[0] );

if ( $prod_price !== $regular_price ) {
$prod_price = '<del>'.$regular_price.$v_product->get_price_suffix() . '</del> <ins>' .
$prod_price . $v_product->get_price_suffix() . '</ins>';
}
return $prod_price;
}

Luego añade otro fragmento de código e incorporar este:

add_action( 'wp_footer', 'dcms_add_script_footer' );

function dcms_add_script_footer() {
if ( ! is_product() ) return;
?>
<script>
jQuery(function ($) {

$('.variations_form').on('woocommerce_variation_has_changed', function () {
const container_price_top = 'p.price';
const container_price_bottom = '.woocommerce-variation-price';

$(container_price_top).empty();

setTimeout(function(){
if ( $(container_price_bottom).is(":visible") ){
const content = $(container_price_bottom).html();
$(container_price_top).html(content);
$(container_price_bottom).hide();
}
}, 500);
});

});
</script>
<?php
}

Guarda los cambios y revisa si con ello te muestra los precios como deseas. 

Un Saludo 


 
Respondido : 14/10/2022 11:50 am