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

How to add variation details to product variations in WooCommerce?

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

变体:

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

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