• Resolved cjbreither

    (@cjbreither)


    I’m looking to try and make the price for a selected product variation (in my case the price for 1lb or 1/2lb of fudge) replace the product price range (on my website it reads as “From $6.99” instead of $ – $$).

    If you go to my related link (a product in my shop) you can see what I’m talking about. Ideally the price for the selected product variation (it defaults to 1lb which is $13.99) would directly replate the “From $6.99.”

    Would love coding or plugin suggestions

    The page I need help with: [log in to see the link]

Viewing 9 replies - 1 through 9 (of 9 total)
  • con

    (@conschneider)

    Engineer

    Hi there,

    How about: https://annaschneider.me/hide-the-price-range-for-woocommerce-variable-products/

    Does that go into the right direction?

    Kind regards,

    Thread Starter cjbreither

    (@cjbreither)

    That got me some of the way there, though it also removed the prices for items shown in the sidebar on my single item product page.

    The code for moving the variable price up from by the Add to Cart button to under the item title that the linked page provided also didn’t work for me.

    Thread Starter cjbreither

    (@cjbreither)

    Found a script that made it work! Thanks.

    Mind sharing that script? We all can benefit from that. 🤗

    Thread Starter cjbreither

    (@cjbreither)

    Absolutely, what I ended up using was

    // removing the price of variable products
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
    
    // Change location of
    add_action( 'woocommerce_single_product_summary', 'custom_wc_template_single_price', 10 );
    function custom_wc_template_single_price(){
        global $product;
    
        // Variable product only
        if($product->is_type('variable')):
    
            // 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;
                    visibility: hidden !important; 
                }
            </style>
            <script>
                jQuery(document).ready(function($) {
                    // When variable price is selected by default
                    setTimeout( function(){
                        if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){
                            if($('p.availability'))
                                $('p.availability').remove();
    
                            $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('div.woocommerce-variation-availability').html()+'</p>');
                            console.log($('div.woocommerce-variation-availability').html());
                        }
                    }, 300 );
    
                    // On live variation selection
                    $('select').blur( function(){
                        if( 0 < $('input.variation_id').val() && null != $('input.variation_id').val() ){
                            if($('.price p.availability') || $('.price p.stock') )
                                $('p.price p').each(function() {
                                    $(this).remove();
                                });
    
                            $('p.price').html($('div.woocommerce-variation-price > span.price').html()).append('<p class="availability">'+$('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="price">'.$price.'</p>
            <div class="hidden-variable-price" >'.$price.'</div>';
    
        endif;
    }

    Thank you! We appreciate you contributing back.

    Hello

    Thank you! the script work well. I have however on issue once I select the option the price does not update unless I click in any part of the screen. Do you know to make the price update automatically?

    Tnx

    Solved I exchanged

    $(‘select’).blur(function(){ with $(‘select’).click(function(){

    thank you

    Hi, i had the same problem @alessiobrii.

    the script work well. I have however on issue once I select the option the price does not update unless I click in any part of the screen.

    I fixed aswell whith the same change

    $(‘select’).blur(function(){ with $(‘select’).click(function(){

    Is working on PC but on small devices like smartphones i need press any part of screen.

    any idea?

    • This reply was modified 6 years, 6 months ago by Fernando Caballero. Reason: correct error
Viewing 9 replies - 1 through 9 (of 9 total)

The topic ‘Making selected variation pride replace price range’ is closed to new replies.