akifquddus
akifquddus

Reputation: 632

Show Product sale end date on Woocommerce Product Page

I have this code but it seems outdated

add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 ); 
global $product; 
function custom_price_html( $price, $product ) {

if ( is_single() && $product->is_on_sale() && $sales_price_to != "" ) {

$sales_price_from = $product->get_date_on_sale_from();
$sales_price_to   = $product->get_date_on_sale_to();

if( ! empty($sales_price_from) || ! empty($sales_price_to) ){
    $sales_price_date_to   = $sales_price_from->date( "j.m.Y");
    $sales_price_date_from = $sales_price_to->date( "j.m.Y");
    $sales_date = '<p class="offer_date">Angebot vom '.$sales_price_date_from.' bis '.$sales_price_date_to.'</p>';
} else {
    $sales_date = $sales_price_from = $sales_price_to = '';
}

    $price = str_replace( '</ins>', ' </ins> <b>(Offer from ' . $sales_price_date_from . ' till ' . $sales_price_date_to . ')</b>', $price );
}

return $price;
}

I want to display sale end date for simple and variable products.

Upvotes: 1

Views: 1537

Answers (1)

Rameez Iqbal
Rameez Iqbal

Reputation: 507

You're using the $sales_price_to variable when it's not defined. Please use the below code, tested and works perfectly.

add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 ); 
function custom_price_html( $price, $product ) {

if ( is_single() && $product->is_on_sale() ) {
$sales_price_from = $product->get_date_on_sale_from();
$sales_price_to   = $product->get_date_on_sale_to();
if( ! empty($sales_price_from) || ! empty($sales_price_to) ){
    $sales_price_date_from   = $sales_price_from->date( "j.m.Y");
    $sales_price_date_to = $sales_price_to->date( "j.m.Y");
    $sales_date = '<p class="offer_date">Angebot vom '.$sales_price_date_from.' bis '.$sales_price_date_to.'</p>';
} else {
    $sales_date = $sales_price_from = $sales_price_to = '';
}

    $price = str_replace( '</ins>', ' </ins> <b>(Offer from ' . $sales_price_date_from . ' till ' . $sales_price_date_to . ')</b>', $price );
}

return $price;
}

Upvotes: 1

Related Questions