• Resuelto toscodesign

    (@toscodesign)


    Buenos dias

    Para mi tienda woocommerce tengo un selector de variaciones y , en funcion de la que elijas tiene un precio u otro.
    El tema es que me aparece abajo ese precio que varia y arriba me aparece el tipico arco de precios de un producto variable (que yo he cambiado a Desde: precio mas pequeño); ¿Sabéis como puedo cargarme ese arco de precios de la pagina de producto sin quitarlo de la shop?. Por que tengo dos precios

    La página con la que necesito ayuda: [accede para ver el enlace]

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • Moderador jose64

    (@jose64)

    Hola.

    No indicas cómo hiciste el cambio, si lo hiciste usando un código personalizado tienes que añadirle un condicional para que no se ejecute en las páginas de archivo. Te dejo la información de la documentación:

    WordPress Reference > Functions > is_archive()

    WordPress Codex > Conditional Tags

    WooCommerce > Codex > Conditional Tags

    Yo particularmente usaría el condicional is_product() envolviendo el código para que solo se ejecute en la página de producto, de forma que en todas las demás seguiría viéndose el rango de precios.

    Recuerda comentar si con esto lo solucionas y, por favor, recuerda cerrar el debate marcándolo como resuelto cuando así sea, de esta forma nos ayudas a mantener el foro al día.

    Iniciador del debate toscodesign

    (@toscodesign)

    Buenas Jose Luis

    Muchas gracias por tu ayuda, pero no se exactamente donde meterlo. El código que he utilizado lo pongo a continuación, y el objetivo es que en producto no se vea nada pero en shop se vea lo que esta.

    function wc_wc20_variation_price_format( $price, $product ) {
    // Main Price
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
    // Sale Price
    $prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    sort( $prices );
    $saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Desde %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
    if ( $price !== $saleprice ) {
    $price = '' . $saleprice . ' ' . $price . '';
    }
    
    return $price;
    }
    add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
    add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );
    • Esta respuesta fue modificada hace 3 años, 1 mes por jose64. Razón: etiquetar código
    Moderador jose64

    (@jose64)

    Entiendo que quieres que se muestre en la página de producto «Desde» y en las páginas de archivo (tienda, categorías, etiquetas) el rango. Este es el código:

    function wc_wc20_variation_price_format( $price, $product ) {
    	
    	// Comprueba que es una página de producto para ejecutar el código.
    	
    	if ( is_singular( [ 'product' ] ) ) {
    
    	// Si es una página de producto modifica la visualización del precio.
    		
    	// Main Price
    		$prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    		$price = $prices[0] !== $prices[1] ? sprintf( __( 'Desde %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
    	// Sale Price
    		$prices = array( $product->get_variation_regular_price( 'min', true ), $product->get_variation_regular_price( 'max', true ) );
    		sort( $prices );
    		$saleprice = $prices[0] !== $prices[1] ? sprintf( __( 'Desde %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );
    
    		if ( $price !== $saleprice ) {
    		$price = '' . $saleprice . ' ' . $price . '';
    		}
    	}
    	
    	// Si no es una página de producto no modifica nada
    
    	return $price;
    }
    add_filter( 'woocommerce_variable_sale_price_html', 'wc_wc20_variation_price_format', 10, 2 );
    add_filter( 'woocommerce_variable_price_html', 'wc_wc20_variation_price_format', 10, 2 );

    Es el mismo código que estás usando con el condicional para que se ejecute únicamente si es la página de producto, en las demás páginas no se ejecuta, así que ves la opción por defecto.

    Recuerda cerrar el debate marcándolo como resuelto si con esto lo solucionas, así nos ayudas a mantener el foro al día.

    Iniciador del debate toscodesign

    (@toscodesign)

    Muchísimas gracias!

    No era exactamente eso pero me ha servido para ver donde poner los condicionales.

Viendo 4 respuestas - de la 1 a la 4 (de un total de 4)
  • El debate ‘Precio dos veces’ está cerrado a nuevas respuestas.