Для многих владельцев сайтов и фрилансеров важно быстро и точно оценивать стоимость проектов, учитывая не только базовые параметры, но и сроки выполнения, ресурсы и дополнительные факторы. В этой статье мы подробно разберём, как создать калькулятор расчёта стоимости проекта в WordPress, который будет учитывать сроки и ресурсы, используя практические примеры плагинов и кода.
Почему важен калькулятор с учётом сроков и ресурсов
Большинство простых калькуляторов на WordPress рассчитывают стоимость по фиксированным параметрам, например, количеству страниц или типу услуги. Но в реальных проектах на стоимость существенно влияют:
- Сроки выполнения — срочные проекты обычно стоят дороже;
- Используемые ресурсы — например, количество разработчиков, дизайнеров или лицензий ПО;
- Сложность и дополнительные опции — например, интеграции, тестирование, поддержка.
Учитывая эти факторы, вы сможете более точно формировать коммерческие предложения и автоматизировать расчёты на сайте.
Выбор плагина для создания калькулятора с учётом сроков и ресурсов
Для реализации подобного калькулятора подойдёт несколько плагинов, которые поддерживают сложные формы и вычисления:
- WPRemark — позволяет создавать формы с динамическими расчётами и логикой;
- Quizle — плагин для интерактивных опросников и калькуляторов;
- Gravity Forms или Formidable Forms — популярные конструкторы, позволяющие добавлять кастомные скрипты.
В примерах ниже мы будем использовать WPRemark для наглядности.
Создание основных полей калькулятора
Первым шагом создадим форму с основными полями:
- Тип проекта (сайт, мобильное приложение, интеграция);
- Сроки выполнения (количество дней);
- Количество ресурсов (разработчики, дизайнеры);
- Дополнительные услуги (тестирование, поддержка);
В WPRemark вы можете создать форму с такими полями через визуальный конструктор. Для динамического расчёта мы присвоим каждому полю уникальный ID, например, project_type, deadline_days, developers_count, designers_count, extra_services.
Пример расчёта стоимости на PHP в WordPress
Допустим, у нас базовые ставки такие:
- Сайт — 1000 у.е.;
- Мобильное приложение — 3000 у.е.;
- Интеграция — 1500 у.е.;
- Разработчик в день — 200 у.е.;
- Дизайнер в день — 150 у.е.;
- Тестирование — +10% к итоговой стоимости;
- Поддержка — +5% к итоговой стоимости.
Имея данные с формы, считаем стоимость:
function wpcalcru_calculate_project_cost($data) {
$base_prices = [
'site' => 1000,
'mobile_app' => 3000,
'integration' => 1500,
];
$dev_rate_per_day = 200;
$designer_rate_per_day = 150;
$base_price = isset($base_prices[$data['project_type']]) ? $base_prices[$data['project_type']] : 0;
$days = intval($data['deadline_days']);
$devs = intval($data['developers_count']);
$designers = intval($data['designers_count']);
$extra = $data['extra_services'];
$resources_cost = ($dev_rate_per_day * $devs + $designer_rate_per_day * $designers) * $days;
$total = $base_price + $resources_cost;
if (in_array('testing', $extra)) {
$total *= 1.10; // +10%
}
if (in_array('support', $extra)) {
$total *= 1.05; // +5%
}
return round($total, 2);
}Этот код можно использовать в AJAX-обработчике или в REST API для динамического расчёта.
Реализация AJAX-запроса для динамического обновления стоимости
Чтобы калькулятор обновлял стоимость без перезагрузки страницы, используем AJAX:
- Добавим JS-скрипт, который собирает данные формы и отправляет их на сервер;
- Создадим PHP-обработчик, который вызовет функцию
wpcalcru_calculate_project_costи вернёт результат; - Обработаем ответ и выведем итог в форме.
Пример JavaScript для AJAX-запроса
jQuery(document).ready(function($) {
function wpcalcru_update_cost() {
var data = {
action: 'wpcalcru_calculate_cost',
project_type: $('#project_type').val(),
deadline_days: $('#deadline_days').val(),
developers_count: $('#developers_count').val(),
designers_count: $('#designers_count').val(),
extra_services: $('#extra_services').val() || []
};
$.post(wpcalcru_ajax_obj.ajax_url, data, function(response) {
if(response.success) {
$('#project_cost').text(response.data.cost + ' у.е.');
} else {
$('#project_cost').text('Ошибка расчёта');
}
});
}
$('#project_type, #deadline_days, #developers_count, #designers_count, #extra_services').on('change input', wpcalcru_update_cost);
wpcalcru_update_cost();
});PHP-обработчик AJAX
add_action('wp_ajax_wpcalcru_calculate_cost', 'wpcalcru_ajax_calculate_cost');
add_action('wp_ajax_nopriv_wpcalcru_calculate_cost', 'wpcalcru_ajax_calculate_cost');
function wpcalcru_ajax_calculate_cost() {
$data = [
'project_type' => sanitize_text_field($_POST['project_type']),
'deadline_days' => intval($_POST['deadline_days']),
'developers_count' => intval($_POST['developers_count']),
'designers_count' => intval($_POST['designers_count']),
'extra_services' => isset($_POST['extra_services']) ? array_map('sanitize_text_field', (array)$_POST['extra_services']) : []
];
$cost = wpcalcru_calculate_project_cost($data);
wp_send_json_success(['cost' => $cost]);
}Добавление стилей и UX-улучшений для калькулятора
Чтобы калькулятор выглядел удобно и понятно, стоит:
- Использовать понятные выпадающие списки и чекбоксы для выбора опций;
- Выводить цену в крупном шрифте и обновлять её мгновенно;
- Добавить подсказки и пояснения к каждому полю;
- Сделать форму адаптивной для мобильных устройств.
Это улучшит взаимодействие с пользователем и повысит конверсию.
Дополнительные возможности и расширения
Учет скидок и специальных условий
Можно добавить дополнительные поля для скидок или промокодов и учитывать их при расчёте. Например, добавить в функцию:
if(!empty($data['promo_code']) && $data['promo_code'] === 'WP2024') {
$total *= 0.9; // скидка 10%
}Интеграция с CRM и отправка заявок
После расчёта можно настроить отправку данных клиента и рассчитанной стоимости в CRM или на email, чтобы оперативно обрабатывать заявки.
Использование плагина WPRemark для визуального создания
В WPRemark можно создавать сложные калькуляторы без кода, задавая формулы и условия прямо в интерфейсе. Это удобно, если не хотите писать PHP и JS вручную.
Итоги
Создание калькулятора расчёта стоимости проекта с учётом сроков и ресурсов в WordPress — задача вполне выполнимая с помощью существующих плагинов и собственных скриптов. Это позволит автоматизировать процесс формирования коммерческих предложений и повысить качество обслуживания клиентов.