Автоматизация расчёта стоимости услуг на сайте WordPress — частая задача для владельцев бизнеса, которые хотят предоставить пользователям удобный инструмент для оценки цены заказа или услуги. В этой статье мы подробно разберём, как реализовать такую функциональность, используя готовые плагины и собственный код. Кроме того, вы узнаете, как сделать расчёты динамическими и удобными для пользователя.
Почему важно автоматизировать расчёт стоимости на сайте WordPress
Ручной расчёт стоимости услуг или товаров неудобен и часто приводит к ошибкам, потерям клиентов и снижению конверсии. Автоматизация позволяет:
- Уменьшить количество обращений в поддержку по вопросам цены.
- Увеличить скорость принятия решения пользователем.
- Предоставить точную и прозрачную информацию о стоимости.
- Собрать данные о предпочтениях клиентов для анализа.
Особенно это актуально для сайтов с индивидуальными услугами, где стоимость зависит от множества факторов: объёма работ, материалов, сроков и т.д.
Выбор плагина для расчёта стоимости в WordPress
Существует множество плагинов, которые позволяют быстро внедрить калькулятор стоимости на сайт:
1. Calculated Fields Form
Очень гибкий плагин с визуальным конструктором форм и поддержкой сложных математических формул. Позволяет создавать многоступенчатые калькуляторы с условной логикой.
2. Cost Calculator Builder
Простой и удобный в использовании плагин с готовыми шаблонами калькуляторов. Подходит для сайтов услуг, фрилансеров, агентств.
3. WooCommerce Product Add-Ons
Если ваш сайт использует WooCommerce, этот плагин позволяет добавлять дополнительные опции к товарам с автоматическим пересчётом цены.
Выбор плагина зависит от конкретных задач и уровня кастомизации. Если вы хотите полностью контролировать логику расчёта, лучше использовать собственный код или расширять функциональность с помощью хуков.
Пример создания простого калькулятора стоимости с помощью кода
Рассмотрим пример, как добавить на страницу формы простой калькулятор без плагинов. Задача: рассчитать стоимость услуги в зависимости от количества часов и выбранного тарифа.
Создадим шорткод [wpcalc_cost_calculator], который будет выводить форму и показывать результат.
function wpcalc_render_cost_calculator() {
ob_start();
?>
<form id="wpcalc-cost-form">
<label>Количество часов:
<input type="number" id="wpcalc-hours" min="1" value="1" required>
</label><br>
<label>Тариф:
<select id="wpcalc-rate">
<option value="1000">Стандарт - 1000 ₽/час</option>
<option value="1500">Премиум - 1500 ₽/час</option>
<option value="2000">Эксперт - 2000 ₽/час</option>
</select>
</label><br>
<button type="submit">Рассчитать</button>
</form>
<div id="wpcalc-result" style="margin-top:15px;font-weight:bold;"></div>
<script>
document.getElementById('wpcalc-cost-form').addEventListener('submit', function(e) {
e.preventDefault();
const hours = parseFloat(document.getElementById('wpcalc-hours').value);
const rate = parseFloat(document.getElementById('wpcalc-rate').value);
if (isNaN(hours) || hours < 1) {
alert('Введите корректное количество часов');
return;
}
const total = hours * rate;
document.getElementById('wpcalc-result').textContent = 'Итоговая стоимость: ' + total.toLocaleString('ru-RU') + ' ₽';
});
</script>
<?php
return ob_get_clean();
}
add_shortcode('wpcalc_cost_calculator', 'wpcalc_render_cost_calculator');Этот код добавляет форму с выбором количества часов и тарифов, а также выводит итоговую сумму без перезагрузки страницы. Такой калькулятор можно расширять, добавляя дополнительные параметры и условия.
Расширение калькулятора: условная логика и скидки
Для более сложных задач часто нужно применять условия и изменять стоимость в зависимости от выбора пользователя. Например, добавим скидку 10% при заказе от 10 часов.
function wpcalc_render_cost_calculator() {
ob_start();
?>
<form id="wpcalc-cost-form">
<label>Количество часов:
<input type="number" id="wpcalc-hours" min="1" value="1" required>
</label><br>
<label>Тариф:
<select id="wpcalc-rate">
<option value="1000">Стандарт - 1000 ₽/час</option>
<option value="1500">Премиум - 1500 ₽/час</option>
<option value="2000">Эксперт - 2000 ₽/час</option>
</select>
</label><br>
<button type="submit">Рассчитать</button>
</form>
<div id="wpcalc-result" style="margin-top:15px;font-weight:bold;"></div>
<script>
document.getElementById('wpcalc-cost-form').addEventListener('submit', function(e) {
e.preventDefault();
const hours = parseFloat(document.getElementById('wpcalc-hours').value);
const rate = parseFloat(document.getElementById('wpcalc-rate').value);
if (isNaN(hours) || hours < 1) {
alert('Введите корректное количество часов');
return;
}
let total = hours * rate;
if (hours >= 10) {
total *= 0.9; // скидка 10%
}
document.getElementById('wpcalc-result').textContent = 'Итоговая стоимость: ' + total.toLocaleString('ru-RU') + ' ₽';
});
</script>
<?php
return ob_get_clean();
}
add_shortcode('wpcalc_cost_calculator', 'wpcalc_render_cost_calculator');Такой подход позволяет гибко настраивать логику без сложных плагинов и легко интегрируется в любую страницу.
Интеграция с WooCommerce для автоматического расчёта цены
Если ваш сайт построен на WooCommerce, можно автоматизировать расчёт стоимости прямо на странице товара, используя дополнительные поля и хук woocommerce_before_calculate_totals.
Пример добавления дополнительного поля «Количество часов» и корректировки цены:
add_action('woocommerce_before_calculate_totals', 'wpcalc_woocommerce_custom_price', 10, 1);
function wpcalc_woocommerce_custom_price($cart) {
if (is_admin() && !defined('DOING_AJAX')) return;
foreach ($cart->get_cart() as $cart_item_key => $cart_item) {
if (isset($cart_item['custom_hours'])) {
$base_price = $cart_item['data']->get_regular_price();
$hours = floatval($cart_item['custom_hours']);
$new_price = $base_price * $hours;
$cart_item['data']->set_price($new_price);
}
}
}
// Добавляем поле на страницу товара
add_action('woocommerce_before_add_to_cart_button', 'wpcalc_add_custom_hours_field');
function wpcalc_add_custom_hours_field() {
echo '<label for="custom_hours">Количество часов:</label>';
echo '<input type="number" id="custom_hours" name="custom_hours" min="1" value="1" required />';
}
// Сохраняем поле в корзину
add_filter('woocommerce_add_cart_item_data', 'wpcalc_add_custom_hours_cart_item_data', 10, 2);
function wpcalc_add_custom_hours_cart_item_data($cart_item_data, $product_id) {
if (isset($_POST['custom_hours'])) {
$cart_item_data['custom_hours'] = sanitize_text_field($_POST['custom_hours']);
}
return $cart_item_data;
}Такой метод позволяет динамически менять цену товара в зависимости от введённых параметров пользователя, что идеально подходит для услуг с почасовой оплатой.
Советы по оптимизации и UX для калькуляторов стоимости
Чтобы калькулятор работал эффективно и пользователи не сталкивались с проблемами, стоит придерживаться нескольких правил:
- Минимизируйте количество обязательных полей — чем проще, тем лучше.
- Добавляйте пояснения и подсказки для каждого параметра.
- Используйте валидацию на стороне клиента и сервера.
- Обеспечьте адаптивность формы для мобильных устройств.
- Если расчёты сложные — показывайте промежуточные результаты и примеры.
- Храните данные расчётов, чтобы пользователь мог вернуться к результату.
Следуя этим рекомендациям, вы повысите доверие и удобство на сайте, что положительно скажется на конверсии.