如何在WooCommerce中向产品变体添加变体详细信息?

时间:2019-03-07 18:06:57

标签: wordpress woocommerce woocommerce-rest-api

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

变化:

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

1 个答案:

答案 0 :(得分:0)

我找不到直接答案,但是找到了解决方法。现在,我使用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;
}
?>