【问题标题】:How to add variation details to product variations in WooCommerce?如何在 WooCommerce 中向产品变体添加变体细节?
【发布时间】:2019-07-29 17:16:00
【问题描述】:

我目前正在使用 WooCommerce REST API v3 来获取产品详细信息。但是对于可变产品,变体 id 仅由 API 提供。 我想要一种方法,通过该方法将变体价格(常规和销售)和变体图像与变体 ID 一起插入 API 响应中。 这样我就可以直接访问这些参数,而无需进行第二次 API 调用来获取这些需要时间的详细信息。 当前响应:

变化:

Array(3)
0: 565
1: 564
2: 563

【问题讨论】:

    标签: wordpress woocommerce woocommerce-rest-api


    【解决方案1】:

    我找不到直接答案,但找到了解决方法。我现在使用 prime_html 在我的应用中显示销售价格和正常价格。 我有人有同样的问题将下面的代码添加到你的functions.php

    add_filter( 'woocommerce_price_trim_zeros', '__return_true' );
    if (!function_exists('my_commonPriceHtml')) {
    
    function my_commonPriceHtml($price_amt, $regular_price, $sale_price) {
        $html_price = '<p class="price">';
        //if product is in sale
        if (($price_amt == $sale_price) && ($sale_price != 0)) {
            $discount=  round((($regular_price - $sale_price)/($regular_price)) * 100,0);
            $html_price = '<h3>&#8377;'.round($sale_price,0). '</h3>'  ; ;
            $html_price .= '<del>'. wc_price($regular_price) . '</del>';
            $html_price .=   '<h4>'.$discount .'%&nbsp;' . OFF .'</h4>' ;
        }
    
        //not is sale
        else if (($price_amt == $regular_price) && ($regular_price != 0)) {
            $html_price .=   wc_price($regular_price) ;
        }
    
    
    
        return $html_price;
    }
    
    }
    
    add_filter('woocommerce_get_price_html', 'my_simple_product_price_html', 100, 2);
    
    function my_simple_product_price_html($price, $product) {
    if ($product->is_type('simple')) {
        $regular_price = $product->regular_price;
        $sale_price = $product->sale_price;
        $price_amt = $product->price;
        return my_commonPriceHtml($price_amt, $regular_price, $sale_price);
    } else {
        return $price;
    }
    }
    
    add_filter('woocommerce_variation_sale_price_html', 'my_variable_product_price_html', 10, 2);
    add_filter('woocommerce_variation_price_html', 'my_variable_product_price_html', 10, 2);
    
    function my_variable_product_price_html($price, $variation) {
    $variation_id = $variation->variation_id;
    //creating the product object
    $variable_product = new WC_Product($variation_id);
    
    $regular_price = $variable_product->regular_price;
    $sale_price = $variable_product->sale_price;
    $price_amt = $variable_product->price;
    
     return my_commonPriceHtml($price_amt, $regular_price, $sale_price);
     }
    
    add_filter('woocommerce_variable_sale_price_html', 'my_variable_product_minmax_price_html', 10, 2);
    add_filter('woocommerce_variable_price_html', 'my_variable_product_minmax_price_html', 10, 2);
    
    function my_variable_product_minmax_price_html($price, $product) {
    $variation_min_price = $product->get_variation_price('min', true);
    $variation_min_regular_price = $product->get_variation_regular_price('min', true);
    
    if (($variation_min_price == $variation_min_regular_price) && ($variation_max_price == $variation_max_regular_price)) {
        $html_min_max_price = $price;
    } else {
    
        $discount=  round((($variation_min_regular_price - $variation_min_price)/($variation_min_regular_price)) * 100,0);
        $html_price = '<p class="price">';
        $html_price =   '<h3>&#8377;'.round($variation_min_price,0). '</h3>'  ;
        $html_price .= '<del>' . wc_price($variation_min_regular_price) .  '</del>';
        $html_price .=   '<h4>'.$discount .'%&nbsp;' . OFF .'</h4>' ;
        $html_min_max_price = $html_price;
    }
    
    return $html_min_max_price;
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 2018-04-21
      相关资源
      最近更新 更多