Affichage prix promo personnalisé

  • WordPress :4.7
  • Statut : non résolu
2 sujets de 1 à 2 (sur un total de 2)
  • Auteur
    Messages
  • #1637240

    Claudeine
    Participant
    Initié WordPress
    15 contributions

    Bonjour à tous,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :  php 7.0.15 MySQL 5.5.55
    • Thème utilisé : Thème Perso
    • Extensions en place : Woocommerce 3.0.7
    • Nom de l’hébergeur : OVH
    • Adresse du site : http://www.stereo-type.fr

    Problème(s) rencontré(s) :

    Auparavant pour afficher les prix promos j’utilisais les filtre suivant :

    //Affichage prix promo
    add_filter( 'woocommerce_sale_price_html', 'woocommerce_custom_sales_price', 10, 2 );
    function woocommerce_custom_sales_price( $price, $product ) {
    	$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    	$sale_price = $product->get_sale_price();
    	$price = 'Now $'.$sale_price.' Save '.$percentage."%";
    	return $price ;
    }
    add_filter( 'woocommerce_variation_sale_price_html', 'custom_variation_sale_price', 10, 2 );
    function custom_variation_sale_price( $price, $product ) {
    	$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
        $var_price = '$'.$product->get_price(). '<span class="saleprice">-'.$percentage.'%</span>';
        return $var_price;
    }

    Mais voilà ça ne marche plus depuis le passage à la 3.0.7 et c’est l’affichage des prix promo « par défaut » de woocommerce qui apparait (je ne m’en étais pas rendu compte av. car pas de promo entre temps).

    A mon avis ça doit être truc tout bête du genre le ‘woocommerce_sale_price_html’ qui ne s’appelle plus comme ça dans la nouvelle version mais je ne trouve pas la réponse et l’éventuel nouveau nom.

    Quelqu’un aurait-il une idée ?

    Merci de votre aide.

    #1637271

    Claudeine
    Participant
    Initié WordPress
    15 contributions

    Bon j’ai trouvé un début de solution tout seul avec ceci :

    add_filter( 'woocommerce_get_price_html', function( $price, $product ) 
    { 
        global $woocommerce_loop;
    
        // check if we are in single product page, in main section, and if product has price and is on sale
        if ( is_product() && !isset( $woocommerce_loop ) && $product->get_price() && $product->is_on_sale() ) {
    
            // collect prices from $price html string
            $prices = array_map( function( $item ) {        
                return array( $item, (float) preg_replace( "/[^0-9.]/", "", html_entity_decode( $item, ENT_QUOTES, 'UTF-8' ) ) );           
            }, explode( ' ', strip_tags( $price ) ) );
    		
    		$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    		
    		$price = '$'.$prices[1][1]. '<span class="saleprice">-'.$percentage.'%</span>';
        }
    	if ( !is_product() && isset( $woocommerce_loop ) && $product->get_price() && $product->is_on_sale() ) {
    
            // collect prices from $price html string
            $prices = array_map( function( $item ) {        
                return array( $item, (float) preg_replace( "/[^0-9.]/", "", html_entity_decode( $item, ENT_QUOTES, 'UTF-8' ) ) );           
            }, explode( ' ', strip_tags( $price ) ) );
    		
    		$percentage = round( ( ( $product->regular_price - $product->sale_price ) / $product->regular_price ) * 100 );
    		$price = 'Now $'.$prices[1][1]. ' Save '.$percentage.'%';
        }
    
        return $price;
    
    }, 10, 2 );

    Par contre je en sais pas encore comment identifier s’il s’agit d’un produit « variable » ou d’un « produit simple » car pour moi l’affichage est différent.

    Une idée ?

2 sujets de 1 à 2 (sur un total de 2)
  • Vous devez être connecté pour répondre à ce sujet.