gpt4 book ai didi

php - 在正常价格之前显示销售价格 (WooCommerce)

转载 作者:行者123 更新时间:2023-12-05 09:19:14 26 4
gpt4 key购买 nike

我想在正常(折扣)价之前显示产品的促销价。我知道这与 get_price_html 有关。默认情况下,这会输出如下内容:

<del>regular price</del>
<ins>sale price</ins>

我想更改输出,使其看起来像这样(基本上,两个价格以不同的顺序显示):

<ins>sale price</ins>
<del>regular price</del>

我该怎么做?

最佳答案

Yes you have to alter get_price_html method which can be done by using following hook's:

  1. For Simple Product: woocommerce_get_price_html hook.
  2. For Variable Product: woocommerce_variation_sale_price_html & woocommerce_variation_price_html
  3. For Variable Product Min Max Price: woocommerce_variable_sale_price_html & woocommerce_variable_price_html

更新 2018 年 2 月 16 日

代码如下:

对于 WooCommerce 版本 2.6.x 或以下

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)) {
$html_price .= '<ins>' . woocommerce_price($sale_price) . '</ins>';
$html_price .= '<del>' . woocommerce_price($regular_price) . '</del>';
}
//in sale but free
else if (($price_amt == $sale_price) && ($sale_price == 0)) {
$html_price .= '<ins>Free!</ins>';
$html_price .= '<del>' . woocommerce_price($regular_price) . '</del>';
}
//not is sale
else if (($price_amt == $regular_price) && ($regular_price != 0)) {
$html_price .= '<ins>' . woocommerce_price($regular_price) . '</ins>';
}
//for free product
else if (($price_amt == $regular_price) && ($regular_price == 0)) {
$html_price .= '<ins>Free!</ins>';
}
$html_price .= '</p>';
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_max_price = $product->get_variation_price('max', true);
$variation_min_regular_price = $product->get_variation_regular_price('min', true);
$variation_max_regular_price = $product->get_variation_regular_price('max', true);

if (($variation_min_price == $variation_min_regular_price) && ($variation_max_price == $variation_max_regular_price)) {
$html_min_max_price = $price;
} else {
$html_price = '<p class="price">';
$html_price .= '<ins>' . woocommerce_price($variation_min_price) . '-' . woocommerce_price($variation_max_price) . '</ins>';
$html_price .= '<del>' . woocommerce_price($variation_min_regular_price) . '-' . woocommerce_price($variation_max_regular_price) . '</del>';
$html_min_max_price = $html_price;
}

return $html_min_max_price;
}

适用于 WooCommerce 3.0 或更高版本

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)) {
$html_price .= '<ins>' . wc_price($sale_price) . '</ins>';
$html_price .= '<del>' . wc_price($regular_price) . '</del>';
}
//in sale but free
else if (($price_amt == $sale_price) && ($sale_price == 0)) {
$html_price .= '<ins>Free!</ins>';
$html_price .= '<del>' . wc_price($regular_price) . '</del>';
}
//not is sale
else if (($price_amt == $regular_price) && ($regular_price != 0)) {
$html_price .= '<ins>' . wc_price($regular_price) . '</ins>';
}
//for free product
else if (($price_amt == $regular_price) && ($regular_price == 0)) {
$html_price .= '<ins>Free!</ins>';
}
$html_price .= '</p>';
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->get_regular_price();
$sale_price = $product->get_sale_price();
$price_amt = $product->get_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->get_regular_price();
$sale_price = $variable_product->get_sale_price();
$price_amt = $variable_product->get_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_max_price = $product->get_variation_price('max', true);
$variation_min_regular_price = $product->get_variation_regular_price('min', true);
$variation_max_regular_price = $product->get_variation_regular_price('max', true);

if (($variation_min_price == $variation_min_regular_price) && ($variation_max_price == $variation_max_regular_price)) {
$html_min_max_price = $price;
} else {
$html_price = '<p class="price">';
$html_price .= '<ins>' . wc_price($variation_min_price) . '-' . wc_price($variation_max_price) . '</ins>';
$html_price .= '<del>' . wc_price($variation_min_regular_price) . '-' . wc_price($variation_max_regular_price) . '</del>';
$html_min_max_price = $html_price;
}

return $html_min_max_price;
}

代码进入 functions.php您活跃的子主题(或主题)的文件。或者也可以在任何插件 php 文件中。
代码已经过测试并且可以工作。

希望这对您有所帮助!

关于php - 在正常价格之前显示销售价格 (WooCommerce),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41410174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com