Обзор и требования
MevvForms Free — локальная среда выполнения. Опубликованная форма читается из версионируемой записи формы WordPress, отрисовывается с настоящими подписями и связями с ошибками, заново проверяется на сервере, сохраняется локально и передаётся в устойчивую очередь уведомлений.
- WordPress
- 6.6 или новее; проверено вплоть до WordPress 7.1.
- PHP
- 8.1 или новее; матрица выпусков покрывает PHP 8.1–8.5.
- Граница данных
- Определения форм, записи и задания в очереди по умолчанию остаются на сайте WordPress.
- Таблицы
- Тринадцать собственных таблиц: заявки и их типизированные значения, очередь задач, файлы, незавершённые отправки, журнал уведомлений, два счётчика аналитики, ссылки на контент, запасы, купоны, платежи и платёжные события.
- Плановые задания
- Два ежечасных задания. Одно применяет политику хранения, другое разгружает единую очередь задач, несущую уведомления, отложенные ленты и экспорты — одна очередь вместо отдельного cron-задания на каждую функцию.
- Файлы перевода
- С плагином поставляются девятнадцать локалей WordPress, включая исходные каталоги.
Пока посетитель отрисовывает или отправляет форму, бесплатная редакция не обращается к внешнему сервису ни за лицензией, ни с телеметрией, ни за AI, ни за обновлением.
Установка
- Сделайте восстановимую резервную копию базы данных и wp-content.
- Загрузите и активируйте ZIP MevvForms Free.
- Убедитесь, что таблицы базы данных MevvForms созданы и что администратор может открыть панель управления.
- Держите исходный плагин форм активным, пока не завершатся предпросмотр миграции, импорт и проверки работоспособности.
- Устанавливайте соответствующий компаньон Pro только тогда, когда сохранённая форма использует выпущенный модуль Pro.
Не удаляйте бесплатный пакет, пока установлен Pro. Среда выполнения сохранённой формы принадлежит бесплатной редакции; Pro её расширяет.
Конструктор
Поля перетаскиваются на место, и всё, что может сделать мышь, может сделать и клавиатура. Добавление, выбор и удаление поля — обычные кнопки, поэтому Enter и пробел уже работают; для перемещения поля есть собственное сочетание клавиш, Ctrl со стрелкой вверх или вниз, которое вызывает ровно то же перемещение, что и перетаскивание. После каждого изменения фокус возвращается на карточку, с которой вы работали, а «живая» область объявляет, что произошло — «Поле Email перемещено с позиции 2 на позицию 5 из 9» — так что изменение порядка можно отслеживать без зрения.
Колонки — инструмент вёрстки с прикреплённым правилом: порядок чтения должен оставаться идентичным порядку полей. Это проверяется на сервере, а не оставляется на откуп CSS. Раскладка, которая разместила бы поля на странице в порядке, отличном от порядка в схеме, не рендерится, а отклоняется с ошибкой, потому что программа чтения с экрана и зрячий посетитель должны получить одну и ту же форму.
- Автосохранение
- Черновик записывается в собственную черновую запись формы примерно через две с половиной секунды после того, как вы прекращаете печатать. Он никогда не затрагивает опубликованную форму и никогда не создаёт ревизию WordPress, поэтому автосохранение не может случайно что-либо опубликовать.
- Ревизии
- Сохранение использует собственную систему ревизий WordPress, а не отдельную частную, а значит ревизии видны любому другому инструменту, который понимает WordPress. Конструктор показывает пятьдесят последних и может восстановить любую из них.
В конструкторе нет отмены или повтора действия. Путь назад — восстановление более ранней ревизии, и оно восстанавливает всю форму целиком, а не последнее действие. Если вы собираетесь внести крупное изменение, сначала сохраните форму, чтобы была ревизия, к которой можно вернуться.
Типы полей
Тридцать восемь типов полей в пяти группах. Все они входят в бесплатный пакет, включая подпись, повторитель, матрицу и тест.
- Базовые
- Однострочный текст, текст абзаца, электронная почта, электронная почта с подтверждением, телефон, адрес сайта, число, пароль, скрытое значение.
- Выбор
- Выпадающий список, выпадающий список с множественным выбором, группа переключателей, группа флажков, одиночный флажок, согласие, оценка, ранжирование, ползунок.
- Расширенные
- Имя, адрес, дата, время, дата и время, цвет, загрузка файла.
- Оплата
- Вычисление, итог заказа, товар, код скидки.
- Разметка
- Заголовок, разрыв раздела, разделитель, блок контента, разрыв страницы. Они не принимают ввод и не создают сохраняемого значения.
Поле пароля рендерится и валидируется, но его значение никогда не записывается в заявку. Так же, как и любое поле, помеченное как несохраняемое. Поля вычисления и итога действительно показывают на экране поле ввода, но их значение приходит не из браузера: сервер заново выполняет формулу и перезаписывает всё, что пришло.
Шаблоны
Двадцать восемь готовых форм, задуманных как отправная точка, а не готовый продукт: контакт, запрос коммерческого предложения, заявка на работу, регистрация на мероприятие, опрос обратной связи, запрос поддержки, запрос на запись, подписка на рассылку, заказ товара, жалоба, пожертвование, бронирование столика, регистрация пользователя, викторина, опрос, отправка файла, отзыв, опрос при уходе, заявка на обслуживание, планировщик встреч, регистрация на курс, согласие родителей, опрос-рекомендация, бронирование проживания, регистрация волонтёров, отчёт об ошибке, регистрация поставщика и запрос обратного звонка.
Шаблон копируется в новую форму и затем редактируется; это не живая связь, поэтому изменение шаблона впоследствии не меняет формы, уже построенные на его основе.
Отрисовка и отправка формы
Вставьте опубликованную форму через [mevvforms id="123"]. Отрисовщик выводит стабильные идентификаторы полей, настоящие подписи, описания, цель для сводки ошибок и подписанную сессию, привязанную к текущей ревизии формы.
В блочном редакторе то же самое — это блок, MevvForms Form, и его предпросмотр — не приближение: редактор просит сервер отрендерить блок, и сервер делает это в точности тем кодом, который использует витрина. То, что вы видите в редакторе, и есть страница.
- Обязательность и правила проверки берутся из схемы, которой владеет сервер.
- Скрытые или неизвестные значения от клиента не могут ослабить правила сервера.
- Корректная отправка создаёт запись раньше, чем сработает любой побочный эффект уведомления.
- Ответ содержит настроенное сообщение или безопасное перенаправление, но никогда — сохранённые значения полей.
Если форма изменилась после того, как страница была открыта, обновите страницу перед отправкой, чтобы подписанная сессия совпала с текущей ревизией.
Условная логика
Поле можно показывать или скрывать по значению других полей, с группами И и ИЛИ, вложенными друг в друга до десяти уровней. Доступны четырнадцать операторов: равно, не равно, содержит, не содержит, начинается с, заканчивается на, пусто, не пусто, больше, меньше, больше или равно, меньше или равно, входит в число, не входит в число.
Условия заново вычисляются на сервере при каждой отправке. Поле, скрытое браузером, всё равно можно отправить вручную, поэтому скрытие в браузере — это удобство, а никак не правило. То же вычисление решает, какие поля существуют для валидации, для хранения и для тела уведомления — а значит форма ведёт себя корректно и с отключённым JavaScript, просто без живого показа и скрытия.
Многошаговые формы и «сохранить и продолжить»
Разрыв страницы превращает одну форму в несколько шагов. Это обычное поле разметки, поэтому длинная форма становится многошаговой добавлением поля, а не преобразованием во что-то другое.
«Сохранить и продолжить» сохраняет незавершённую отправку и выдаёт посетителю ссылку для возврата к ней. Ссылка несёт подписанный токен — идентификатор строки и HMAC над ним — и подпись выводится из собственного секрета сайта. Ничего из хранящегося в базе данных не достаточно, чтобы подделать такой токен самостоятельно, сравнение выполняется за постоянное время, а срок действия ссылки истекает через тридцать дней.
Токен и есть учётные данные: вход не требуется и куки не устанавливаются, поэтому любой, у кого есть ссылка, может продолжить эту отправку. Относитесь к ссылке для возобновления так же, как к ссылке для сброса пароля — отправляйте её конкретному человеку, а не в общий почтовый ящик.
Записи и граница приватности
Записи и типизированные проекции полей хранятся в отдельных локальных таблицах. Пароли, данные карт, CVV, nonce WordPress, сессионные токены и поля, помеченные store=false, никогда не пишутся в значения записи.
- IP-адреса представлены только специфичным для сайта HMAC там, где это нужно для ограничения частоты.
- Текстовые, числовые и датовые проекции поддерживают последующий поиск, не меняя исходной идентичности поля.
- Неудачная запись в таблицу записей или в outbox откатывает всю транзакцию отправки.
- Боевые свидетельства фиксируют только идентификаторы формы, записи и задания; отправленные значения не фиксируются никогда.
Список заявок ищет по сохранённым значениям, фильтрует по статусу, состоянию «прочитано» и «отмечено звездой» и по диапазону дат, а также применяет «прочитано», «не прочитано», «отметить звездой», «снять звезду», «спам», «в корзину», «восстановить» и «удалить» сразу к выделенным записям. Каждое из этих действий проверяется по вашим правам отдельно, поэтому роль, которая может читать заявки, но не может их удалять, не сможет удалить их и через массовое действие.
- CSV, который открывается корректно
- Файл начинается с метки порядка байтов — именно это заставляет Excel читать его как UTF-8. Без неё турецкие символы приходят повреждёнными, и обычная реакция — винить экспорт, а не кодировку.
- CSV, который не может выполниться
- Значение, начинающееся с
=,+,-,@, табуляции или возврата каретки, получает перед собой апостроф. Эти символы заставляют электронную таблицу воспринимать отправленное значение как формулу, а форма — это как раз то место, где это значение выбирает посторонний человек.
Уведомления и подтверждения
Уведомления — устойчивые задания. Сбой почты не может стереть принятую запись: временные неудачи повторяются с ограниченными задержками, а постоянные ошибки конфигурации останавливаются до вмешательства администратора.
Форма может нести несколько уведомлений, у каждого свои получатели, тема, тело и условие. Получателями могут быть фиксированные адреса, адреса, взятые из поля, заполненного посетителем, либо маршруты, выбираемые по значению поля — и используется каждый подходящий маршрут, а не только первый, потому что форма, доходящая одновременно и до отдела продаж, и до поддержки, — это нормальный случай, а не ошибка. Автоответчик — тот же механизм, направленный обратно на человека, заполнившего форму.
- Заголовки
- Получатели и подстановочные теги в заголовках проверяются; внедрение CR/LF вырезается.
- Тело
- HTML экранируется или фильтруется под контекст вывода.
- Подтверждение
- Решение о сообщении, странице того же сайта или перенаправлении из списка разрешённых берётся из сохранённой схемы.
- Идемпотентность
- Один и тот же ключ задания уведомления не может дважды создать один и тот же побочный эффект.
- Журнал доставки
- Одна строка на каждую попытку: какая форма, заявка, уведомление и задача, было ли отправлено или произошёл сбой, какая это по счёту попытка, получатели, тема, код и сообщение об ошибке. Неудачную строку можно отправить снова прямо с экрана.
Журнал фиксирует то, что было предпринято, а не то, что было доставлено. Письмо передаётся WordPress, а оттуда — вашему хостингу; строка с пометкой «отправлено» означает, что письмо покинуло сайт, а всё остальное может рассказать только отказ на другом конце.
Защита от спама
С момента установки включены две защиты: поле-ловушка, которое человек никогда не видит, и проверка по времени, отклоняющая форму, отправленную быстрее чем за три секунды. Ни одна из них ничего не стоит посетителю и ни одна не ломает вспомогательные технологии — именно поэтому они действуют по умолчанию, а не как испытание-задача.
Сверх этого всё остальное — по желанию и выключено, пока вы сами не включите: reCAPTCHA v2 и v3, hCaptcha, Cloudflare Turnstile и Akismet, а также правила по ключевым словам, адресам и странам, полностью работающие на вашем собственном сервере.
Отправка, признанная спамом, помечается, а не удаляется. Срабатывание ловушки, непройденная или получившая низкую оценку CAPTCHA и вердикт Akismet — все они сохраняют заявку со статусом «спам», где вы можете её прочитать и передумать, потому что цена ошибочно отброшенного запроса намного выше цены строки, которую нужно просмотреть. Два исключения — проверка по времени и ограничение частоты запросов: они отклоняют запрос ещё до того, как заявка вообще появляется; отмечать нечего, и ничто никогда не было принято, а затем выброшено.
Akismet — единственный вариант, который отправляет отправленные значения, IP-адрес посетителя, идентификатор браузера и адрес перехода третьей стороне. Это передача персональных данных: предупредите посетителей, прежде чем включать её. Другие провайдеры получают только то, что собирает их собственный скрипт, плюс токен испытания, а IP-адрес посетителя им не передаётся, если только фильтр на вашем сайте этого не запросит.
Контроль доступа
Форма может открываться и закрываться по расписанию, останавливаться после определённого числа отправок, требовать авторизованного пользователя или конкретную роль либо стоять за паролем. Все четыре случая решает одна функция, и эта функция вызывается из двух мест: один раз, когда форма вот-вот будет отрендерена, и один раз, когда приходит отправка.
Два места вызова, одно решение. Если бы скрытие формы и отклонение прямой отправки были написаны отдельно, они бы со временем разошлись, и закрытая форма всё равно принимала бы POST-запрос от того, кто знает адрес. Здесь ничего не обеспечивается в браузере.
Лимит отправок проверяется ещё раз сразу после записи строки, при этом счётчик блокируется на время чтения. Иначе два посетителя, нажавшие «отправить» в одну и ту же секунду, оба прошли бы проверку, выполненную до того, как хоть один из них был учтён.
Загрузка файлов
Загруженные файлы хранятся вне досягаемости адресной строки. Имя каталога не поддаётся угадыванию и несёт правила запрета для Apache, IIS и листинга каталога, поэтому файл не будет отдан, даже если кто-то узнает его путь.
Хранилище находится внутри вашего каталога загрузок, если вы не определите MEVVFORMS_FILE_VAULT_DIR и не направите его куда-нибудь за пределы корня веб-сервера. Расположение вне корня веб-сервера надёжнее, чем правила запрета, потому что оно переживает сброшенную или вовсе не читаемую конфигурацию веб-сервера. Если хостинг позволяет — задайте его.
О файле судят по тому, что внутри, а не по имени, с которым он пришёл. Первые байты сравниваются с таблицей известных сигнатур, исполняемая магическая последовательность отклоняется сразу, и файл сканируется на встроенный скрипт, даже если его сигнатура выглядела безобидно. Расширение — это лишь заявление того, кто загрузил файл.
Загрузки идут через подписанную ссылку, а не через путь. Подпись охватывает файл, человека и срок действия — по умолчанию пятнадцать минут и никогда не более суток — и при скачивании всё равно повторно проверяется, что человеку разрешено его получить, даже пока ссылка ещё действует. Ссылка, переданная кому-то другому, для него не работает.
Витринные представления
Заявки можно опубликовать обратно на сайт в виде представления: сетки, таблицы, календаря, временной шкалы или карты. Представления размещаются с помощью [mevvforms_view id="12"] или блока MevvForms View, а закрепление одной записи на странице — просто вопрос указания заявки по имени.
Карта не обращается ни к какому внешнему сервису. Не нужно загружать тайлы, получать ключ или отправлять запрос геокодирования: точки рисуются как встроенное векторное изображение прямо на вашей странице, а координаты также выводятся под ней текстом для тех, кто не может увидеть рисунок. Выглядит проще, чем тайловая карта, но взамен ни один адрес посетителя не отправляется картографической компании страницей, о наличии карты на которой он даже не знал.
Конфиденциальность и хранение
MevvForms зарегистрирован в собственных инструментах WordPress для экспорта и удаления персональных данных, поэтому запрос данных, обработанный через WordPress, находит заявки, незавершённые отправки и файлы, и никому не нужно вспоминать о проверке ещё одного экрана.
Срок хранения задаётся для каждой формы отдельно, в днях — ноль означает хранить бессрочно, а потолок составляет десять лет. Применяет его ежечасное задание.
Прежде чем сохранить изменение срока хранения, экран сообщает вам, сколько заявок это сделает подлежащими окончательному удалению. Число вычисляется заранее, а удаление — отдельный, отдельно подтверждаемый шаг. Ввод «30» в поле никогда не должен быть тем же жестом, что и уничтожение четырёх тысяч записей.
Аналитика форм
Аналитика отвечает на один вопрос — где люди бросают заполнение этой формы — и она выключена, пока вы её не включите и не укажете, какие формы она может измерять. Пока она выключена, ничего не записывается, ни один скрипт не добавляется на ваши страницы и никакой публичной конечной точки вообще не существует.
Во включённом состоянии она ведёт две таблицы ежедневных счётчиков: по форме — просмотры, начала заполнения, отправки и незавершённые попытки; по полю — незавершённые попытки на этом поле, число случаев, когда оно оставалось пустым, ошибки валидации, суммарное время фокуса и сколько посетителей на нём фокусировались.
Идентификатор посетителя не создаётся, и куки не устанавливаются. В таблицах нет столбца для IP-адреса, пользователя, электронной почты, сессии, отпечатка браузера, реферера или отправленного значения — именно форма схемы делает строку неотслеживаемой, а не обещание не смотреть. Сигнал из браузера идёт на ваш собственный сайт и подтверждается собственным короткоживущим билетом формы, одинаковым для каждого посетителя этой формы. Поскольку строки — это агрегаты, экспорт персональных данных не находит ничего для экспорта, а на запрос удаления отвечает строка, сообщающая об этом.
Создание формы с помощью ИИ
Вы можете описать форму одним предложением, и поля будут расставлены за вас. Поддерживаются три подключения: Ollama и LM Studio, работающие на вашей собственной машине или сервере, и совместимая с OpenAI конечная точка для тех, кто предпочитает размещённую модель с собственным ключом.
- Нигде в плагине нет ни квоты, ни кредитов, ни счётчика использования — нечему заканчиваться, потому что модель не наша.
- При использовании Ollama или LM Studio описание вашей формы никогда не покидает машину, на которой работает модель.
- Если подключение не настроено, функция вообще не показывается и никакой запрос не отправляется. Нет никакого размещённого резервного варианта, который мог бы случайно сработать.
Вставленный вами ключ хранится в единственной опции WordPress, которая не загружается на каждой странице, и впоследствии экран показывает его в маскированном виде — но он хранится в том виде, в котором вы его ввели, без шифрования. Всё, что имеет доступ к базе данных, может его прочитать. Используйте ключ с ограниченными нужными правами и обновляйте его, если сайт меняет владельца.
То, что возвращается, — это черновик. Это отправная раскладка для правки, а не форма для публикации без прочтения — и сгенерированное поле понятия не имеет, что требует ваш закон спрашивать или, наоборот, не спрашивать.
Импорт из другого плагина форм
Формы можно импортировать из семи других плагинов: Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Ninja Forms и SureForms.
- Источник только читается. Импорт ничего не меняет, не деактивирует и не удаляет в другом плагине, и его собственные данные остаются в точности там, где были.
- Всё, что не может быть перенесено, перечисляется с указанием причины. Импорт отказывается записывать данные, пока вы не увидите этот список и не примете его — тихий частичный импорт — это способ, которым пропавшее уведомление обнаруживается через три недели клиентом, так и не получившим ответа.
- Старые шорткоды продолжают работать. Как только миграция активна, на шорткод исходного плагина отвечает MevvForms, поэтому страницы, которые никогда не редактировались, продолжают показывать работающую форму. Если этот шорткод уже занят чем-то другим, MevvForms его не трогает.
Держите исходный плагин установленным, пока вы сами не отправите новую форму и не увидите заявку и уведомление. Пока оригинал ещё на месте, откат прост, а как только он исчез — затруднителен.
Обратимая миграция с WPForms
Миграция начинается только на чтение. Предпросмотр перечисляет сопоставленные поля, уведомления, подтверждения, вставки на страницах и неподдерживаемые настройки. Применение создаёт или обновляет одну подготовленную форму MevvForms и записывает хеш источника. Оно не удаляет ни данные WPForms, ни ревизии, ни таблицы, ни содержимое страниц.
- Требуйте точного предпросмотра до применения.
- Импортируйте форму как подготовленную и снова сравните хеши источника.
- Прогоните проверочный шлюз перехода: публикация, отрисовка, подписанная тестовая отправка, локальная запись и уведомление в очереди.
- Исходный плагин можно отключать только после того, как эти проверки пройдены.
- Если какая-либо проверка не проходит, откат восстанавливает прежний список активных плагинов и возвращает импортированную форму в черновики.
Измеренный инвентарь mevvshop.com — одна исходная форма с 4 полями, 1 уведомлением, 1 подтверждением и одной живой вставкой. Эти числа — шлюз выпуска для того сайта, а не обещание про каждую форму WPForms.
Приём платежа
Форма может нести цену. Поля товара содержат позиции, поля вычисления и итога определяют, сколько причитается, а заказ строится на сервере из схемы при каждой отправке.
- Сумма никогда не приходит из браузера. Итог, поступивший вместе с отправкой, используется только для сравнения, а несовпадение отклоняет отправку, а не тихо её исправляет — с посетителя никогда не должна взиматься сумма, отличная от той, что ему была показана.
- Деньги переносятся из конца в конец как целые числа в наименьшей единице валюты. Нигде ни одно денежное значение не проходит через число с плавающей точкой.
- Ничто не становится оплаченным без ответа от провайдера. Браузер, возвращающийся со страницы оплаты, в лучшем случае переводит заказ в состояние «требует сверки»; для статуса «оплачено» нужно уведомление с проверенной подписью либо прямой запрос провайдеру.
- Данные карты никогда не попадают на сайт. В контракте платежа нет поля для номера карты, срока действия или кода безопасности, и в базе данных для них нет столбца.
- PayPal — шлюз в Pro
- Pro добавляет шлюз PayPal, построенный на Orders v2. Заказ открывается на вашем сервере, посетитель подтверждает его на собственной странице PayPal, а деньги списываются на обратном пути — или, если он раньше закроет вкладку, когда придёт подписанное уведомление. Оба пути заканчиваются в одной точке, так что подтверждённый заказ не остаётся без списания с несобранными деньгами. От двойного списания защита двойная: вызов списания несёт фиксированный идентификатор запроса, который PayPal не проигрывает повторно, а ответ «уже списано» читается как уже сделанная работа, а не как сбой. Возвраты, полные или частичные, оформляются из записи.
- PayPal недоступен в Türkiye
- PayPal не работает в Türkiye и не рассчитывается в турецких лирах, поэтому этот шлюз — для продаж за рубеж. Турецкие платёжные провайдеры остаются там, где были, на мосту MevvPos, и здесь это не меняется.
Ни на одном уровне нет комиссии за транзакцию. Несколько плагинов форм берут процент с того, что вы собираете, на своём бесплатном платёжном уровне; тест подтверждает, что сумма, отправленная провайдеру, в точности равна итогу заказа.
Ни один платёж не был проведён от начала до конца, включая PayPal. За всем этим пока нет ни боевого, ни песочного мерчант-аккаунта: каждый путь провайдера отрабатывается против заглушки, а форма запроса и уведомления сверена построчно с опубликованной документацией провайдеров, а не с завершённым вызовом. Пока это не изменится, считайте платёжные возможности недоказанными и не выставляйте их перед реальными клиентами только на основании наших слов.
Zapier и Make
Pro также может публиковать записи в Zapier и Make как REST-хуки. Zapier подписывается на одну из ваших форм, MevvForms запоминает подписку, и каждая последующая запись ставится в очередь и доставляется туда. Отписка снова её удаляет, а отдельный маршрут образцов передаёт Zapier недавнюю запись, чтобы на экране сопоставления полей были настоящие имена полей, а не пустые ячейки.
- Аутентификация — это ключ сайта, который вы создаёте на экране настроек Zapier. Это единственные учётные данные, и они идентифицируют сайт, а не человека.
- Доставки уходят через подписанный webhook и очередь задач, которые бесплатная редакция уже использует. Это новое назначение, а не вторая система доставки, поэтому журнал доставок и повторы работают так же.
- Без действующей лицензии модуль вообще не запускается: не регистрируется ни один маршрут, не добавляется ни один хук, и нет пути в коде, который мог бы дотянуться до удалённого адреса.
Zapier и Make были достижимы и без Pro, потому что бесплатная редакция умеет отправлять подписанный webhook методом POST на любой адрес. Pro убирает промежуточную часть — подписку, сопоставление полей и повтор вы больше не строите сами.
Salesforce
Pro может превратить отправленную форму в Lead, Contact или Case Salesforce. Вы сопоставляете поля формы с полями объекта на экране коннектора, и каждая запись отправляется через ту же очередь, что используют остальные коннекторы, — поэтому сбой Salesforce задерживает запись, а не теряет её.
- Аутентификация — OAuth 2.0 с refresh-токеном. Пароль Salesforce на вашем сайте не хранится.
- Песочница и продакшн — это переключатель, а не второй набор учётных данных, за которым нужно отдельно следить.
- Сама запись в любом случае остаётся на вашем собственном сайте. Отправка копии в Salesforce не переносит туда ваши данные.
Загрузки в ваше собственное объектное хранилище
По умолчанию хранилище файлов находится на вашем собственном диске, вне корня веб-сервера. Pro может перенести его в любое S3-совместимое хранилище — AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2 или Wasabi, — самостоятельно подписывая каждый запрос, поэтому ни один сторонний SDK никогда не видит записи.
Меняется то, где лежат байты, а не то, кто может их получить. Файлы по-прежнему выдаются только по ограниченной по времени ссылке, привязанной к одному человеку, и бесплатный плагин по-прежнему решает, кому она разрешена. Перенос хранилища не переносит проверку прав.
Языки
С плагином поставляются девятнадцать локалей WordPress: немецкий (Германия, официальный немецкий Германии и Швейцария), английский, испанский (Испания, Мексика, Аргентина, Чили, Колумбия), французский, итальянский, японский, нидерландский (Нидерланды и Бельгия), польский, португальский (Бразилия и Португалия), русский и турецкий. В комплект входят редактируемые исходные каталоги, поэтому перевод можно исправить прямо на вашем сайте.
Турецкий и английский — те два языка, что были вычитаны построчно. Остальные полны, но не все из них ещё прошли проверку человеком; если строка звучит странно на вашем языке, дело именно в этом, а каталог существует для того, чтобы это исправить.
Граница между бесплатной редакцией и Pro
Надёжная среда выполнения принадлежит бесплатному изданию, а вместе с ней и почти всё на этой странице: схема, все тридцать восемь типов полей, доступный рендерер, серверная проверка и условная логика, многошаговые формы с шагом-сводкой и разговорным режимом, «сохранить и продолжить», локальные записи с экспортом в CSV и журналом изменений, заметки администратора и процесс согласования, очередь уведомлений и журнал доставки, исходящие вебхуки, подписанные HMAC, полный антиспам-набор, контроль доступа, файловое хранилище, витрины на сайте, инструменты хранения и приватности, аналитика, генерация с помощью ИИ, импортеры для семи плагинов и разовые платежи без комиссии.
Pro добавляет именованные коннекторы сервисов: Mailchimp, HubSpot, Brevo, ActiveCampaign, Airtable, Notion, Google Sheets, Discord, Telegram и Slack — каждый говорит в собственной форме этого сервиса, — плюс шлюз PayPal, коннектор Zapier и Make на REST-хуках, регулярные платежи, коды скидок и частичные оплаты. Обратите внимание, что это по-прежнему значит: бесплатная редакция уже отправляет подписанный webhook методом POST на любой адрес, так что Zapier, Make и всё, что вы напишете сами, остаются достижимы и без Pro — Pro убирает промежуточную часть: подписку, сопоставление полей и повтор, которые иначе пришлось бы писать самому. Лицензионный барьер — собственная проверка запуска модуля: без действующей лицензии не загружается ни один класс коннектора, не регистрируется ни один фильтр задач и удалённый вызов невозможен.
Пункт дорожной карты не рекламируется как работающая возможность. Прежде чем строить форму вокруг модуля Pro, проверьте установленную версию и заметки к выпуску.
Решение проблем и откат
- Старый шорткод пуст
- Убедитесь, что у исходного идентификатора есть активное сопоставление миграции и что шорткод wpforms не принадлежит другому плагину.
- Отправка сообщает об истёкшей сессии
- Перезагрузите страницу и отправьте её против последней опубликованной ревизии.
- Уведомление ждёт
- Откройте состояние очереди, исправьте постоянную ошибку конфигурации или дождитесь запланированной повторной попытки при временной ошибке транспорта.
- Переход не отключил WPForms
- Прочитайте результат проверки. Защитный шлюз сохранил или восстановил WPForms, потому что не удалась проверка отрисовки, отправки, записи или задания.
- Поле, которое посетитель не мог видеть, всё равно пришло
- Именно в этот момент решает сервер. Условия заново вычисляются при отправке, поэтому значение, отправленное для скрытого поля, там же и отбрасывается — проверяйте само условие, а не браузер.
- Турецкие символы искажены в CSV
- Файл несёт метку порядка байтов и имеет кодировку UTF-8. Электронная таблица, которой велено импортировать его как что-то другое, всё равно покажет его неправильно; открывайте его напрямую, а не через мастер импорта с уже выбранной кодировкой.
- Ссылка на скачивание сообщает, что срок её действия истёк
- По умолчанию ссылки действуют пятнадцать минут и привязаны к человеку, который их запросил. Сгенерируйте новую прямо из заявки; ссылку нельзя переслать коллеге.
- Панель ИИ отсутствует
- Подключение не настроено. Панель скрывается, а не показывается сломанной, и пока она скрыта, никуда ничего не отправляется.
- Пункт меню открывает пустой экран
- Некоторые пункты меню — заглушки для экранов, которые ещё не построены. Пустой экран — не сломанная установка.
Для поддержки сообщите версии плагина, WordPress и PHP плюс безопасный код ошибки. Перед отправкой журналов уберите значения полей, данные клиентов, сессионные токены, nonce и ключи лицензий.
Обновления
Обновления приходят через сам WordPress. Плагин спрашивает наш магазин, существует ли более новая версия, и передаёт ответ собственному механизму обновлений WordPress, так что новый выпуск появляется на экране плагинов с обычной кнопкой Обновить, вместо того чтобы ждать, пока кто-то вручную скачает zip. В бесплатной редакции этот запрос несёт только имя пакета и установленную версию — ни адреса сайта, ни адреса электронной почты, ни лицензионного ключа, ни списка плагинов. Поскольку ничто в нём вас не идентифицирует, доверие держится на подписи: ответ подписан нашим ключом Ed25519, а ответ без подписи, с неверной подписью, воспроизведённый со старой отметкой времени или направляющий загрузку на любой хост, кроме нашего, отбрасывается, не касаясь сайта.
Ограничения
Сказано прямо, чтобы ничто на этой странице не приходилось принимать на веру.
- Платёжные функции не были проверены на боевом или песочничном счёте продавца. Они построены по документации провайдеров и протестированы на имитации транспорта.
- В конструкторе нет отмены или повтора действия. Путь назад — ревизии.
- Вывод в PDF зависит от сайта. Если библиотека PDF установлена, MevvForms её использует; если нет — вместо этого создаёт документ для печати и оставляет печать браузеру. Ни одна библиотека PDF не входит в комплект и ниоткуда не загружается.
- Теперь каждый пункт меню открывает настоящий экран. Отчёты, интеграции, импорт и экспорт, настройки, роли и журналы в прежних выпусках были заглушками; начиная с 1.1.0 каждый обслуживается собственным пакетом.
- Хранилище загруженных файлов по умолчанию находится внутри каталога загрузок и защищено правилами запрета, а не своим расположением — если только вы сами не направите его за пределы корня веб-сервера.
- Ключи ИИ хранятся в том виде, в котором были введены, без шифрования. На экране они маскируются и не входят в число всегда загружаемых опций, но это не то же самое, что быть нечитаемыми.
- Клавиатурный эквивалент конструктора полон, но невелик. Кнопки задействуют обычные клавиши, а перемещение поля имеет одно сочетание клавиш; учить более обширную раскладку не нужно, да и открывать нечего.
Там, где эта страница говорит, что что-то было измерено, — это было измерено. Там, где она говорит, что что-то не доказано, — это не скромность: это значит, что теста ещё не существует, и это утверждение следует считать незавершённым.