Добавляем конечную дату распродажи в WooCommerce

У вас могут возникнуть ситуация, когда ваш покупатель поинтересуется, имеет ли цена со скидкой ограничение по времени? Такое часто случается при каких-либо праздничных распродажах.

В текущем формате на странице товара в WooCommerce все, что демонстрируется скидкой, это зачеркнутая предыдущая цена и цена со скидкой. Больше ничего.

sales-end-date-price-before[1]

Поэтому в сегодняшней статье мы расскажем вам простой способ как добавить текст «Скидка до (конечная дата)» рядом с ценой со скидкой. Текст вы можете изменять на свое усмотрение.

В статье будут представлены две версии: для русского языка и английского. Код для рус. доработан для вывода даты на русском.

Шаг 1: Открываем файл functions.php вашей темы и добавляем следующий код:

Eng

add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    global $post;
    $sales_price_to = get_post_meta($post->ID, '_sale_price_dates_to', true);
    if(is_single() && $sales_price_to != "")
    {
        $sales_price_date_to = date("j M y", $sales_price_to);

        return str_replace( '</ins>', ' </ins> <b>(Offer till '.$sales_price_date_to.')</b>', $price );
    }
    else
    {
        return apply_filters( 'woocommerce_get_price', $price );
    }
}

Rus

function dateToRussian($date) {
    $month = array("january"=>"января", "february"=>"февраля", "march"=>"марта", "april"=>"апреля", "may"=>"мая", "june"=>"июня", "july"=>"июля", "august"=>"августа", "september"=>"сентября", "october"=>"октября", "november"=>"ноября", "december"=>"декабря");
    $days = array("monday"=>"Понедельник", "tuesday"=>"Вторник", "wednesday"=>"Среда", "thursday"=>"Четверг", "friday"=>"Пятница", "saturday"=>"Суббота", "sunday"=>"Воскресенье");
    return str_replace(array_merge(array_keys($month), array_keys($days)), array_merge($month, $days), strtolower($date));
}
add_filter( 'woocommerce_before_shop_loop_item_title', 'custom_price_html', 100, 2 );
add_filter( 'woocommerce_get_price_html', 'custom_price_html', 100, 2 );
function custom_price_html( $price, $product ){
    global $post;
    $sales_price_to = get_post_meta($post->ID, '_sale_price_dates_to', true);
    if(is_single() && $sales_price_to != "")
    {
        $sales_price_date_to = dateToRussian(date("j F y", $sales_price_to));
        return str_replace( '</ins>', ' </ins> <b>Скидка до '.$sales_price_date_to.'</b>', $price );
    }
    else
    {
        return apply_filters( 'woocommerce_get_price', $price );
    }
}

Шаг 2: Сохраняем файл. Если необходимо изменить текст, сопровождающий конечную дату скидки, это можно сделать, изменив Скидка до либо Offer till на любой нужный.

Шаг 3: Готово, обновите страницу товара, на которой есть скидка до определенной даты.

sales-end-date-price-after[1]

Надеемся, что эта статья помогла вам добавить конечную дату распродажи в WooCommerce.

Если вы только начинаете разбираться с WooCommerce, то не забудьте посетить нашу рубрику WooCommerce, где мы публикуем материалы по этой тематике.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Юрий

    День добрый! А подскажите есть ли вариант подобное вывести не только тна страницу товара , а и на витрину с товарами.?

    • ADv

      Попробуйте изменить is_single() в строке 11 на нужное значение.

  • Andrey Chernov

    Добрый день! Спасибо за русскую версию кода распродажи. Подскажите, как можно убрать год из даты?

Scroll To Top