Добавляем конечную дату распродажи в 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

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

  • Rafael

    Добрый день. Для простого товара все работает прекрасно. Но вот для вариативных товаров ничего не выводится. Не могли бы вы подсказать как решить эту проблему.
    Спасибо ))

Scroll To Top