Wordpress Woocommerce$产品->;is_on_sale()始终返回true

Wordpress Woocommerce$产品->;is_on_sale()始终返回true,wordpress,woocommerce,hook-woocommerce,Wordpress,Woocommerce,Hook Woocommerce,我在functions.php中为一个子主题编写了下面的代码。其想法是,如果用户在网上预订工作,他们可以在工作上获得折扣,以鼓励更多的在线预订,并在商店中显示如下: 进场价:349.99英镑 在线价格:339.00英镑 但是,$product->is_on_sale()似乎总是返回true,即使我在产品中保留销售价格为空。如果我只有一个正常价格(无销售价格),则不显示任何内容(即不显示价格,保留空白),我希望显示正常价格 // **********************************

我在functions.php中为一个子主题编写了下面的代码。其想法是,如果用户在网上预订工作,他们可以在工作上获得折扣,以鼓励更多的在线预订,并在商店中显示如下:

进场价:349.99英镑 在线价格:339.00英镑

但是,$product->is_on_sale()似乎总是返回true,即使我在产品中保留销售价格为空。如果我只有一个正常价格(无销售价格),则不显示任何内容(即不显示价格,保留空白),我希望显示正常价格

// ***********************************************************
// START ADD TEXT BEFORE SALE PRICE
// && (!has_term( 'product', 'product_cat'))
// ***********************************************************
function bd_rrp_sale_price_html( $price, $product ) {
    
    // SHOWS PRICE FOR PRODUCTS NOT REPAIRS
    if (has_term( 'Products', 'product_cat'))
    {
        if ( $product->is_on_sale() ) 
        {
            $has_sale_text = array(
              '<del>' => '<del>Normal Price: ',
              '<ins>' => '<br>Sale Price: <ins>'  );
            
            $return_string = str_replace(array_keys( $has_sale_text ), array_values( $has_sale_text ), $price);
        }
        else 
        {
            $return_string = $price;// . get_woocommerce_currency_symbol().$product->get_regular_price();
        }

    }
    else
    {
        if ( $product->is_on_sale() ) 
        {
            $has_sale_text = array(
              '<del>' => '<del>Walk-In Price: ',
              '<ins>' => '<br>Online Price: <ins>'
            );
            
            $return_string = str_replace(array_keys( $has_sale_text ), array_values( $has_sale_text ), $price);
        }
        else 
        {
            $retun_string = "2";// $price;
        }
    }//ENDIF
    
  return $return_string;
}
add_filter( 'woocommerce_get_price_html', 'bd_rrp_sale_price_html', 100, 2 );
//***********************************************************
//开始在销售价格前添加文本
//&&(!有术语(‘产品’、‘产品类别’)
// ***********************************************************
函数bd_rrp_sale_price_html($price,$product){
//显示产品而非维修的价格
如果(有术语(“产品”、“产品类别”))
{
如果($product->正在销售())
{
$has\u sale\u text=数组(
''=>'正常价格:',
“=>”
销售价格:); $return\u string=str\u replace(数组键($has\u sale\u text),数组值($has\u sale\u text),$price); } 其他的 { $return\u string=$price;//.get\u commerce\u currency\u symbol().$product->get\u regular\u price(); } } 其他的 { 如果($product->正在销售()) { $has\u sale\u text=数组( ''=>'进场价格:', ''=>''
在线价格:' ); $return\u string=str\u replace(数组键($has\u sale\u text),数组值($has\u sale\u text),$price); } 其他的 { $retun_string=“2”/$price; } }//恩迪夫 return$return\u字符串; } 添加过滤器('woocommerce\u get\u price\u html','bd\u rrp\u sale\u price\u html',100,2);
代码中有一个未定义的变量。在else->else条件下,将
$retun\u string
替换为
$return\u string
@7uc1f3r谢谢。。。几个月来一直困扰着我。。。我每次都错过这个。请注意-下次启用调试器!