Добавляем сумму ежемесячного платежа «в рассрочку от …» к цене товара Woocommerce

Сумма ежемесячного платежа

Наверняка вы видели во множестве интернет-магазинов фразу под ценой вида «купить в рассрочку от 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 . ' ₽ в месяц';
}

Он сразу берёт минимальную цену, если на товар действует скидка — минимальную цену со скидкой. Так что можно использовать этот универсальный вариант.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии