Home  >  Article  >  Backend Development  >  How to Replace the Variable Price Range with the Chosen Variation Price in WooCommerce 3?

How to Replace the Variable Price Range with the Chosen Variation Price in WooCommerce 3?

DDD
DDDOriginal
2024-11-15 00:56:02624browse

How to Replace the Variable Price Range with the Chosen Variation Price in WooCommerce 3?

Replacing the Variable Price Range with the Chosen Variation Price in WooCommerce 3

Problem:

On variable products in WooCommerce, the standard layout displays a price range under the product title. This can be confusing and misleading for customers who want to know the exact price of the product with their selected variations.

Solution:

This code addresses the issue by removing the price range and displaying only the lowest product price. Additionally, it updates the displayed price based on the selected variation.

Code:


<br>add_action( 'woocommerce_before_single_product', 'move_variations_single_price', 1 );<br>function move_variations_single_price(){</p>
<pre class="brush:php;toolbar:false">global $product, $post;

if ( $product-&gt;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;

// Prices and calculations
$prices = array( $product-&gt;get_variation_price( 'min', true ), $product-&gt;get_variation_price( 'max', true ) );
$price = $prices[0] !== $prices[1] ? sprintf( __( 'From: %1$s', 'woocommerce' ), wc_price( $prices[0] ) ) : wc_price( $prices[0] );

$prices = array( $product-&gt;get_variation_regular_price( 'min', true ), $product-&gt;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 &amp;&amp; $product-&gt;is_on_sale() ) {
    $price = '&lt;del&gt;' . $saleprice . $product-&gt;get_price_suffix() . '&lt;/del&gt; &lt;ins&gt;' . $price . $product-&gt;get_price_suffix() . '&lt;/ins&gt;';
}

?&gt;
&lt;style&gt;
    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;
    }
&lt;/style&gt;
&lt;script&gt;
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 &gt; span.price').html()).append('&lt;p>

}

Additional Notes:

  • This code is compatible with WooCommerce versions 3.2.x and higher.
  • It is recommended to optionally move the CSS to the stylesheet of your active theme for better readability.
  • The code does not handle compatibility with certain plugins or themes that modify WooCommerce's hooks.

The above is the detailed content of How to Replace the Variable Price Range with the Chosen Variation Price in WooCommerce 3?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn