wordpress - 如何在 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>₹'.round($sale_price,0). '</h3>' ; ;
$html_price .= '<del>'. wc_price($regular_price) . '</del>';
$html_price .= '<h4>'.$discount .'% ' . 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>₹'.round($variation_min_price,0). '</h3>' ;
$html_price .= '<del>' . wc_price($variation_min_regular_price) . '</del>';
$html_price .= '<h4>'.$discount .'% ' . OFF .'</h4>' ;
$html_min_max_price = $html_price;
}
return $html_min_max_price;
}
?>
推荐阅读
- c# - 根据鼠标状态和位置设置 Border.Brush 属性
- javascript - JavaScript clearInterval() 不清除计时器
- php - 如何在变量中传递数组索引或嵌套对象属性
- python - 如果字符串中有任何大写字母,如何返回错误?
- javascript - 将 onClick 设置为 false
- c# - 使用 RegistryView.Registry32 时,RegistryKey.OpenBaseKey 不会重定向到 Wow6432Node 文件夹
- firebase - Flutter Firestore 重置缓存
- git - Git filter-branch 仅适用于分叉提交
- websocket - 将 WebSocket 添加到 Web 服务器
- java - 连接到布局渲染器失败