【问题标题】:Display on sale variation saving amount for WooCommerce variable products显示 WooCommerce 可变产品的销售变化节省金额
【发布时间】:2019-09-10 15:49:26
【问题描述】:

我有一个用于显示配件的自定义插件。我想显示主要产品和配件的总节省量。如果主要产品很简单,如果主要产品是可变的,则我的储蓄有效,储蓄显示为空。有人可以更新我的代码吗

我试过这段代码来显示保存,但它只适用于简单的产品

function you_save_echo_product() {
    global $product;

    // works for Simple and Variable type
    $regular_price  = get_post_meta( $product->get_id(), '_regular_price', true ); // 36.32
    $sale_price     = get_post_meta( $product->get_id(), '_sale_price', true ); // 24.99

    if( !empty($sale_price) ) {

        $saved_amount       = $regular_price - $sale_price;
        $currency_symbol    = get_woocommerce_currency_symbol();

        $percentage = round( ( ( $regular_price - $sale_price ) / $regular_price ) * 100 );
        ?>
            <p id="saving_total_price">You Save: <span class="symbol"><?php echo $currency_symbol; ?></span> <span class="amount"><?php echo $saved_amount; ?></span>.00</p>                
        <?php       
    } 
}
add_action( 'woocommerce_single_product_summary', 'you_save_echo_product', 11 );

我希望以主要产品为变量显示我的配件的总节省

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce variations


    【解决方案1】:

    我已经重新审视了您的代码,因为它有点过时和陈旧......在可变产品上有 2 个价格、一个价格范围和所选的变体价格,因此您需要完全不同的东西来显示所选变体价格的节省金额.

    我还添加了节省百分比(如果不需要,可以删除)。

    // For simple products
    add_action( 'woocommerce_single_product_summary', 'simple_product_saving_amount', 11 );
    function simple_product_saving_amount() {
        global $product;
    
        if( $product->is_type('simple') && $product->is_on_sale() ) {
            $regular_price = (float) wc_get_price_to_display( $product, array('price' => $product->get_regular_price() ) );
            $active_price  = (float) wc_get_price_to_display( $product, array('price' => $product->get_sale_price() ) );
    
            $saved_amount  = $regular_price - $active_price;
            $percentage    = round( $saved_amount / $regular_price * 100 );
    
            echo '<p id="saving_total_price">'. __("You Save") .': ' . wc_price($saved_amount) . ' ('.$percentage.'%)</p>';
        }
    }
    
    // For product variations (on variable products)
    add_filter( 'woocommerce_available_variation', 'variable_product_saving_amount', 10, 3 );
    function variable_product_saving_amount( $data, $product, $variation ) {
    
        if( $variation->is_on_sale() ) {
            $saved_amount  = $data['display_regular_price'] - $data['display_price'];
            $percentage    = round( $saved_amount / $data['display_regular_price'] * 100 );
    
            $data['price_html'] .= '<p id="saving_total_price">'. __("You Save") .': ' . wc_price($saved_amount) . ' ('.$percentage.'%)</p>';
        }
        return $data;
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 2018-10-18
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多