Наверняка вы видели во множестве интернет-магазинов фразу под ценой вида «купить в рассрочку от XXXX рублей в месяц». Вот и на одном из клиентских сайтов понадобилось сделать подобное. Рассрочка уже была, теперь захотелось добавить сумму ежемесячного платежа.
Делать решили шорткодом, чтобы можно было вывести в произвольном месте.
//Выводим сумму платежа в рассрочку шорткодом
add_shortcode( 'installments', 'installments_func' );
function installments_func() {
//Получаем обычную цену товара и делим на 12 месяцев
$price = get_post_meta( get_the_ID(), '_regular_price', true) / 12;
//Получаем цену распродажи и делим на 12 месяцев
$sale = get_post_meta( get_the_ID(), '_price', true) / 12;
//Форматируем цены, чтобы были тысячные и десятичные разделители
$output_installments_price = number_format($price, 0, '.', ' ');
$output_installments_sale = number_format($sale, 0, '.', ' ');
//Если задана цена распродажи, выводим сумму платежа на её основе
if ( !empty($sale)) {
return 'от ' . $output_installments_sale . ' руб. в месяц';
//Если скидок нет, выводим сумму платежа на основе обычной цены
} else {
return 'от ' . $output_installments_price . ' руб. в месяц';
}
}
installments
— название шорткода, которое будет использоваться для вывода суммы платежа на странице товара.
installments_func
— функция, которая будет срабатывать при обнаружении шорткода на странице.
Вот и всё. Осталось добавить шорткод [installments]
в нужное место.
На данном сайте предусмотрены два варианта срока по рассрочке: 6 и 12 месяцев. Для расчёта взяли 12, т. к. сумма платежа при этом меньше. В случае с кредитом в формуле стоит учесть минимальную процентную ставку.
Для случае с вариативными товарами
Как уже понятно из подзаголовка, код выше с вариативными товарами работать не будет. PHP выдаст ошибку. В процессе поиска выяснилось, что код выше слишком громоздкий и может быть сокращён до вот такого вида:
add_shortcode( 'installments', 'installments_func' );
function installments_func() {
$thePrice = get_post_meta( get_the_ID(), '_price', true) / 10; //Сразу делим цену на 10 месяцев. Если у вас другой срок рассрочки — измените
$output_price = number_format($thePrice, 0, '.', ' ');
return 'от ' . $output_price . ' ₽ в месяц';
}
Он сразу берёт минимальную цену, если на товар действует скидка — минимальную цену со скидкой. Так что можно использовать этот универсальный вариант.