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

时间:2017-01-01 作者:Lucrezia van Necker

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

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

<ins>sale price</ins>
<del>regular price</del>
我该怎么做?

非常感谢。

2 个回复
SO网友:jtermaat

您必须在函数中更改此项。php

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 .= \'&nbsp;&nbsp;<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->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>\' . 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;
}

SO网友:Tushar Satani

价格来自price.php woocommerce插件中的文件。在这个文件中有如下函数

$price_html = $product->get_price_html();
您必须对其进行注释,并放置以下代码,而不是此函数。

// Sale Price
<span class="price"><?php echo "Sale Price :". " " . get_woocommerce_currency_symbol().$product->get_sale_price(); ?></span>
// Regular Price
<span class="price"><?php echo "Regular Price :". " " . get_woocommerce_currency_symbol().$product->get_regular_price(); ?></span> 
并根据需要添加类。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请