首页 > 解决方案 > 将可变价格范围更改为选定的可变价格

问题描述

我一直在寻找这种安静的状态。我想用所选变量的价格更改可变价格范围(并隐藏底部的价格,通常在您选择变量后显示)。

为了更改变体价格,我使用以下代码段:

add_action( 'woocommerce_before_single_product', 'move_variations_single_price', 1 );
function move_variations_single_price(){
  global $product, $post;
  if ( $product->is_type( 'variable' ) ) {
    add_action( 'woocommerce_single_product_summary', 'replace_variation_single_price', 10 );
  }
}

function replace_variation_single_price() {
  ?>
    <style>
      .woocommerce-variation-price {
        display: none;
      }
    </style>
    <script>
      jQuery(document).ready(function($) {
        var priceselector = '.product p.price';
        var originalprice = $(priceselector).html();

        $( document ).on('show_variation', function() {
          $(priceselector).html($('.single_variation .woocommerce-variation-price').html());
        });
        $( document ).on('hide_variation', function() {
          $(priceselector).html(originalprice);
        });
      });
    </script>
  <?php
}

这对于具有不同价格的可变产品非常有效,但是如果从所有变体成本相同的可变产品中选择变体,它确实会隐藏价格。

为了用“From(ab) X€”替换价格范围,我使用了这个片段:

function wc_custom_variable_price( $price, $product ) {
    // Main Price
    $prices = array( $product->get_variation_price( 'min', true ), $product->get_variation_price( 'max', true ) );
    $price = $prices[0] !== $prices[1] ? sprintf( __( 'ab %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( __( 'ab %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_custom_variable_price', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_custom_variable_price', 10, 2 );

所以基本上我的问题是我是否做错了什么,或者是否有任何方法可以显示可变产品的价格,而这些产品的变化成本都是一样的......

PS:我已经在这里找到了这个问题(我也在这里找到了第一个片段),但不幸的是我无法发表评论,因为我是这个页面的新手。

提前致谢!

标签: woocommercepricevariations

解决方案


推荐阅读