Maison >développement back-end >tutoriel php >Comment afficher le prix de variation choisi au lieu de la fourchette de prix sur les pages de produits variables WooCommerce ?

Comment afficher le prix de variation choisi au lieu de la fourchette de prix sur les pages de produits variables WooCommerce ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 07:37:14425parcourir

How to Display the Chosen Variation Price Instead of the Price Range on WooCommerce Variable Product Pages?

Remplacez la fourchette de prix variable par le prix de variation choisi dans WooCommerce 3

Dans WooCommerce, la page produit variable affiche une fourchette de prix au lieu d'un prix unique. Bien que cela puisse être utile pour certains produits, cela peut s’avérer indésirable dans d’autres cas. Cet article propose une solution pour remplacer la fourchette de prix par la variation de prix choisie, en garantissant que seul le prix disponible le plus bas soit affiché.

Pour y parvenir, nous utiliserons une fonction PHP personnalisée et un script jQuery. La fonction PHP supprimera la fourchette de prix par défaut et la remplacera par un prix fictif. Le script jQuery mettra ensuite à jour le prix de l'espace réservé avec le prix de variation choisi lorsqu'une variation est sélectionnée.

Voici le code qui gérera cela :

add_action( 'woocommerce_before_single_product', 'move_variations_single_price', 1 );
function move_variations_single_price(){
    global $product, $post;

    if ( $product->is_type( 'variable' ) ) {
        // removing the variations price for variable products
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );

        // Change location and inserting back the variations price
        add_action( 'woocommerce_single_product_summary', 'replace_variation_single_price', 10 );
    }
}

function replace_variation_single_price(){
    global $product;

    // Main Price
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %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( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

    if ( $price !== $saleprice && $product->is_on_sale() ) {
        $price = '<del>' . $saleprice . $product->get_price_suffix() . '</del> <ins>' . $price . $product->get_price_suffix() . '</ins>';
    }

    ?>
    <style>
        div.woocommerce-variation-price,
        div.woocommerce-variation-availability,
        div.hidden-variable-price {
            height: 0px !important;
            overflow:hidden;
            position:relative;
            line-height: 0px !important;
            font-size: 0% !important;
        }
    </style>
    <script>
    jQuery(document).ready(function($) {
        $('select').blur( function(){
            if( '' != $('input.variation_id').val() ){
                if($('p.availability'))
                    $('p.availability').remove();
                $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class=&quot;availability&quot;>'+$('div.woocommerce-variation-availability').html()+'</p>');
                console.log($('input.variation_id').val());
            } else {
                $('p.price').html($('div.hidden-variable-price').html());
                if($('p.availability'))
                    $('p.availability').remove();
                console.log('NULL');
            }
        });
    });
    </script>
    <?php

    echo '<p class=&quot;price&quot;>'.$price.'</p>
    <div class=&quot;hidden-variable-price&quot; >'.$price.'</div>';
}

Le code peut être placé dans n'importe quel fichier PHP dans votre thème enfant ou dans le fichier function.php de votre thème. Il est recommandé d'utiliser un thème enfant pour éviter de perdre les personnalisations lors de la mise à jour de votre thème.

Une fois le code ajouté, la page produit variable affichera le prix disponible le plus bas au lieu de la fourchette de prix. Lorsqu'une variante est sélectionnée, le prix sera mis à jour pour refléter le prix de la variante choisie.

Cette solution est compatible avec WooCommerce 3 et supérieur. Il remplace la fourchette de prix variable par la variation de prix choisie, garantissant ainsi que les clients voient un prix clair et précis pour la variation de produit sélectionnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn