Файл shortcodes.php
Проверяем, есть ли функция с таким названием. Если нет, то создаем:
if (!function_exists('converter_temperature')) { function converter_temperature($atts) { } }
Создаем экземпляр класса Calculator для нашей функции:
$calc = new Calculator('converter_temperature', $atts);
Добавляем первый параметр типа «text», со слугом number, с заголовком «Число *», с пояснениями «» (то есть без них). Обозначаем, что этот параметр должен быть обязательным — ‘required’ => [‘1’], и должен быть числом — ‘valid’ => [‘isNumber’].
$calc->add_item(["text"], "number", "Число *", "", ['required' => ['1'], 'valid' => ['isNumber']]);
Добавляем $options1 и $options2 для первого и второго списка select:
$options1 = '<option value="tselsiy" selected>Цельсий</option> <option value="farengeyt">Фаренгейт</option> <option value="kelvin">Кельвин</option> <option value="rankin">Ранкин</option> <option value="reaumur">Реомюр</option>'; $options2 = '<option value="tselsiy">Цельсий</option> <option value="farengeyt" selected>Фаренгейт</option> <option value="kelvin">Кельвин</option> <option value="rankin">Ранкин</option> <option value="reaumur">Реомюр</option>';
Добавляем второй параметр типа «select», вставляем туда наши опции $options1.
Слуг — number, с заголовком «Число *», с пояснениями «» (то есть без них). Обозначаем, что этот параметр должен быть обязательным — ‘required’ => [‘1’].
$calc->add_item(["select", '', $options1], "from", "Из чего *", "", ['required' => ['1']]);
Третий параметр делаем по аналогии:
$calc->add_item(["select", '', $options2], "to", "Во что *", "", ['required' => ['1']]);
Четвертым параметром делаем чекбокс, в нем обязательно указываем name и value . radio-кнопки делаются по аналогии.
$checkbox_formuls = '<label><input type="checkbox" name="formuls" value="1"> С формулами расчётов</label>'; $calc->add_item(['checkbox', '', $checkbox_formuls], "formuls", '');
Получаем калькулятор и возвращаем его
return $calc->get();
Файл shortcodes_functions.php
Создаем функцию, с названием f_название_калькулятора и с аргументами, с названиями соответствующими слугам параметров калькулятора в shortcodes.php.
Обязательно задаем типы параметров float, string и тд, если это возможно.
function f_converter_temperature(float $number = null, string $from = null, string $to = null)
Пишем условия, при которых функция ничего не возвращает:
if ($number === null || $from === null || $to === null) { return null; }
Функцию конвертирования величин я решил вынести в файл shortcodes_helpers.php, так как она может понадобится еще не раз.
Получаю данные:
$data = converter_temp($number, $from, $to);
И возвращаю их:
return <<<EOL <p style="font-size: 16px;"><b>$number</b> градусов {$data['from']} = \\({$data['formula']}\\) = \\({$data['formula_in']}\\) = <b>{$data['result']}</b> градусов {$data['to']}</p> EOL;
Для написания формул использую MathJax . Он уже подключен к сайту.