Dokumentacja MevvForms

Dostępne formularze, lokalne zgłoszenia i odwracalna migracja.

MevvForms odpowiada za schemat formularza, walidację po stronie serwera, dostępne renderowanie, lokalne zgłoszenia i trwałą kolejkę powiadomień — a do tego dochodzi silnik logiki warunkowej ponownie uruchamiany na serwerze, widoki front-endowe, narzędzia do przechowywania i prywatności, lokalne generowanie formularzy przez AI oraz importery dla siedmiu innych wtyczek formularzy. Ten przewodnik dokumentuje to, co wtyczka naprawdę robi dziś, i mówi wprost, gdzie coś nie zostało jeszcze udowodnione.

Przegląd i wymagania

MevvForms Free jest lokalnym środowiskiem wykonawczym. Opublikowany formularz odczytywany jest z wersjonowanego rekordu formularza WordPress, renderowany z prawdziwymi etykietami i powiązaniami błędów, ponownie sprawdzany na serwerze, zapisywany lokalnie i przekazywany do trwałej kolejki powiadomień.

WordPress
6.6 lub nowszy; przetestowane do WordPress 7.1.
PHP
8.1 lub nowszy; macierz wydań obejmuje PHP 8.1–8.5.
Granica danych
Definicje formularzy, zgłoszenia i zadania w kolejce domyślnie pozostają w witrynie WordPress.
Tabele
Trzynaście własnych tabel: zgłoszenia i ich typowane wartości, kolejka zadań, pliki, częściowo ukończone zgłoszenia, dziennik powiadomień, dwa liczniki analityczne, powiązania z treścią, stany magazynowe, kupony, płatności i zdarzenia płatności.
Zaplanowane zadania
Dwa zadania uruchamiane co godzinę. Jedno stosuje reguły przechowywania, drugie opróżnia pojedynczą kolejkę zadań, która niesie powiadomienia, opóźnione kanały i eksporty — jedna kolejka zamiast osobnego crona na każdą funkcję.
Pliki tłumaczeń
Wraz z wtyczką dostarczanych jest dziewiętnaście lokalizacji WordPressa, wraz z katalogami źródłowymi.

Podczas gdy odwiedzający renderuje lub wysyła formularz, wersja darmowa nie wysyła do żadnej usługi zewnętrznej żądania licencji, telemetrii, AI ani aktualizacji.

Instalacja

  1. Wykonaj odtwarzalną kopię zapasową bazy danych i katalogu wp-content.
  2. Wgraj i włącz pakiet ZIP MevvForms Free.
  3. Upewnij się, że tabele bazy danych MevvForms zostały utworzone i że administrator może otworzyć panel.
  4. Trzymaj źródłową wtyczkę formularzy włączoną, dopóki nie zakończą się podgląd migracji, import i testy sprawności.
  5. Odpowiadający pakiet Pro instaluj tylko wtedy, gdy zapisany formularz korzysta z wydanego modułu Pro.

Nie usuwaj pakietu darmowego, gdy zainstalowane jest Pro. Środowisko wykonawcze zapisanego formularza należy do wersji darmowej; Pro je rozszerza.

Kreator

Pola są przeciągane na miejsce, a wszystko, co potrafi zrobić mysz, potrafi też klawiatura. Dodawanie, zaznaczanie i usuwanie pola to zwykłe przyciski, więc Enter i spacja działają od razu; przenoszenie pola ma swój własny jeden skrót — Ctrl ze strzałką w górę lub w dół — który wywołuje dokładnie ten sam ruch, co przeciągnięcie. Po każdej zmianie fokus wraca na kartę, nad którą pracowałeś, a żywy region ogłasza, co się stało — „Przeniesiono Email z pozycji 2 na pozycję 5 z 9” — dzięki czemu zmianę kolejności da się śledzić bez wzroku.

Kolumny to narzędzie układu z dołączoną regułą: kolejność czytania musi pozostać identyczna z kolejnością pól. Jest to sprawdzane na serwerze, a nie pozostawiane CSS-owi. Układ, który umieściłby pola na stronie w innej kolejności niż w schemacie, zostaje odrzucony błędem, a nie wyrenderowany, ponieważ czytnik ekranu i widzący odwiedzający muszą otrzymać ten sam formularz.

Autozapis
Wersja robocza jest zapisywana do własnego rekordu roboczego formularza mniej więcej dwie i pół sekundy po tym, jak przestaniesz pisać. Nigdy nie dotyka opublikowanego formularza i nigdy nie tworzy wersji WordPressa, więc autozapis nie może przypadkiem niczego opublikować.
Wersje
Zapis korzysta z własnego systemu wersji WordPressa, a nie z prywatnego, co oznacza, że wersje są widoczne dla wszystkiego innego, co rozumie WordPressa. Kreator wyświetla listę pięćdziesięciu ostatnich i przywraca dowolną z nich.

W kreatorze nie ma cofania ani ponawiania. Drogą powrotną jest przywrócenie wcześniejszej wersji, a to przywraca cały formularz, a nie ostatnią czynność. Jeśli zamierzasz wprowadzić dużą zmianę, zapisz najpierw, żeby było, do czego wrócić.

Typy pól

Trzydzieści osiem typów pól w pięciu grupach. Wszystkie są w darmowym pakiecie, w tym podpis, powtarzacz, macierz i quiz.

Podstawowe
Tekst jednowierszowy, tekst akapitowy, e-mail, e-mail z potwierdzeniem, telefon, adres URL strony, liczba, hasło, wartość ukryta.
Wybór
Lista rozwijana, lista rozwijana z wielokrotnym wyborem, grupa przycisków radiowych, grupa pól wyboru, pojedyncze pole wyboru, zgoda, ocena, ranking, suwak.
Zaawansowane
Imię i nazwisko, adres, data, godzina, data i godzina, kolor, przesyłanie pliku.
Płatność
Obliczenie, suma zamówienia, produkt, kod rabatowy.
Układ
Nagłówek, podział sekcji, separator, blok treści, podział strony. Nie przyjmują danych wejściowych i nie tworzą żadnej zapisanej wartości.

Pole hasła jest renderowane i walidowane, ale jego wartość nigdy nie jest zapisywana w zgłoszeniu. Podobnie żadne pole oznaczone jako nieprzechowywane. Pola obliczenia i sumy pokazują na ekranie pole, ale ich wartość nie pochodzi z przeglądarki: serwer ponownie uruchamia wzór i nadpisuje wszystko, co przyszło.

Szablony

Dwadzieścia osiem gotowych formularzy, pomyślanych jako punkt wyjścia, a nie gotowy produkt: kontakt, prośba o wycenę, podanie o pracę, rejestracja na wydarzenie, ankieta z opinią, zgłoszenie wsparcia, prośba o wizytę, zapis na newsletter, zamówienie produktu, reklamacja, darowizna, rezerwacja stolika, rejestracja użytkownika, quiz, sonda, przesłanie pliku, referencje, ankieta wyjściowa, zgłoszenie serwisowe, planowanie spotkań, rejestracja na kurs, zgoda rodzica, ankieta rekomendacyjna, rezerwacja noclegu, zapis wolontariuszy, zgłoszenie błędu, rejestracja dostawcy i prośba o oddzwonienie.

Szablon jest kopiowany do nowego formularza, a następnie edytowany; nie jest to żywe powiązanie, więc zmiana szablonu później nie zmienia formularzy już z niego zbudowanych.

Renderowanie i wysyłanie formularza

Opublikowany formularz osadź za pomocą [mevvforms id="123"]. Renderer wypisuje stabilne identyfikatory pól, prawdziwe etykiety, opisy, cel podsumowania błędów oraz podpisaną sesję powiązaną z bieżącą rewizją formularza.

W edytorze bloków ta sama rzecz jest blokiem — MevvForms Form — a jego podgląd nie jest przybliżeniem: edytor prosi serwer o wyrenderowanie bloku, a serwer renderuje go dokładnie tym samym kodem, którego używa front-end. To, co widzisz w edytorze, jest samą stroną.

  • Wymagalność i reguły walidacji brane są ze schematu należącego do serwera.
  • Ukryte lub nieznane wartości od klienta nie mogą rozluźnić reguł serwera.
  • Poprawne zgłoszenie tworzy wpis, zanim uruchomi się jakikolwiek efekt uboczny powiadomienia.
  • Odpowiedź zawiera skonfigurowany komunikat albo bezpieczne przekierowanie, nigdy zapisanych wartości pól.

Jeżeli formularz zmienił się po otwarciu strony, odśwież ją przed wysłaniem, aby podpisana sesja zgadzała się z bieżącą rewizją.

Logika warunkowa

Pole może być pokazywane lub ukrywane w zależności od wartości innych pól, a grupy ORAZ i LUB mogą się zagnieżdżać do dziesięciu poziomów. Dostępnych jest czternaście operatorów: równa się, nie równa się, zawiera, nie zawiera, zaczyna się od, kończy się na, jest puste, nie jest puste, większe niż, mniejsze niż, większe lub równe, mniejsze lub równe, jest jednym z, oraz nie jest żadnym z.

Warunki są ponownie oceniane na serwerze przy każdym zgłoszeniu. Pole ukryte przez przeglądarkę wciąż można wysłać ręcznie, więc ukrywanie go w przeglądarce jest udogodnieniem, a nigdy regułą. Ta sama ocena decyduje, które pola istnieją do walidacji, do zapisu i do treści powiadomienia — co oznacza także, że formularz zachowuje się poprawnie przy wyłączonym JavaScripcie, tylko bez żywego pokazywania i ukrywania.

Formularze wieloetapowe i zapisz i kontynuuj

Podział strony zmienia jeden formularz w kilka etapów. To zwykłe pole układu, więc długi formularz staje się formularzem wieloetapowym dzięki dodaniu pola, a nie przez przekształcenie go w coś innego.

Zapisz i kontynuuj zachowuje częściowo ukończone zgłoszenie i przekazuje odwiedzającemu link do niego. Link niesie podpisany token — identyfikator wiersza i HMAC obliczony na jego podstawie — a podpis jest wyprowadzany z własnego sekretu strony. Nic w bazie danych samo w sobie nie wystarcza do sfałszowania takiego tokenu, porównanie odbywa się w stałym czasie, a link wygasa po trzydziestu dniach.

Token jest poświadczeniem: nie jest wymagane logowanie i nie jest ustawiany żaden plik cookie, więc każdy, kto posiada link, może kontynuować to zgłoszenie. Traktuj link wznowienia tak, jak traktowałbyś link do resetu hasła — wyślij go osobie, a nie na wspólną skrzynkę.

Zgłoszenia i granica prywatności

Zgłoszenia i typowane projekcje pól przechowywane są w wydzielonych tabelach lokalnych. Hasła, dane kart, kody CVV, wartości nonce WordPress, tokeny sesji oraz pola oznaczone store=false nigdy nie trafiają do wartości zgłoszenia.

  • Adresy IP reprezentowane są wyłącznie przez HMAC właściwy danej witrynie, tam gdzie wymaga tego ograniczanie częstotliwości.
  • Projekcje tekstowe, liczbowe i datowe wspierają późniejsze wyszukiwanie, nie zmieniając pierwotnej tożsamości pola.
  • Nieudany zapis zgłoszenia albo zapis do outbox wycofuje całą transakcję wysyłki.
  • Dowody produkcyjne zapisują wyłącznie identyfikatory formularza, zgłoszenia i zadania; nigdy nie zapisują przesłanych wartości.

Lista zgłoszeń przeszukuje zapisane wartości, filtruje według statusu, stanu przeczytania i oznaczenia gwiazdką oraz zakresu dat, a także stosuje jednocześnie do zaznaczenia operacje: przeczytane, nieprzeczytane, oznacz gwiazdką, usuń gwiazdkę, spam, kosz, przywróć i usuń. Każda z nich jest sprawdzana osobno wobec twoich uprawnień, więc rola, która może czytać zgłoszenia, ale nie może ich usuwać, nie może ich usunąć również przez akcję zbiorczą.

CSV, które otwiera się poprawnie
Plik zaczyna się od znacznika kolejności bajtów, dzięki czemu Excel odczytuje go jako UTF-8 — bez niego tureckie znaki przychodzą uszkodzone, a zwykłą reakcją jest obwinianie eksportu zamiast kodowania.
CSV, które nie może się wykonać
Wartość zaczynająca się od =, +, -, @, tabulatora lub powrotu karetki jest poprzedzana apostrofem. Te znaki sprawiają, że arkusz kalkulacyjny traktuje przesłaną wartość jak formułę, a formularz to dokładnie miejsce, w którym tę wartość wybiera obcy.

Powiadomienia i potwierdzenia

Powiadomienia są trwałymi zadaniami. Awaria poczty nie może wymazać przyjętego zgłoszenia: błędy przejściowe ponawiane są z ograniczonymi opóźnieniami, a trwałe błędy konfiguracji zatrzymują się do działania administratora.

Formularz może nieść kilka powiadomień, z których każde ma własnych odbiorców, temat, treść i warunek. Odbiorcami mogą być stałe adresy, adresy pobrane z pola wypełnionego przez odwiedzającego lub trasy wybierane na podstawie wartości pola — i używana jest każda pasująca trasa, nie tylko pierwsza, ponieważ formularz docierający jednocześnie do sprzedaży i wsparcia to normalny przypadek, a nie błąd. Autoresponder to ten sam mechanizm skierowany z powrotem do osoby, która wypełniła formularz.

Nagłówki
Odbiorcy i znaczniki scalania w nagłówkach są sprawdzane; wstrzyknięcie CR/LF jest usuwane.
Treść
Kod HTML jest escapowany albo filtrowany pod kątem kontekstu wyjścia.
Potwierdzenie
Decyzja o komunikacie, stronie w tej samej witrynie albo przekierowaniu z listy dozwolonych wybierana jest z zapisanego schematu.
Idempotentność
Ten sam klucz zadania powiadomienia nie może dwukrotnie wywołać tego samego efektu ubocznego.
Dziennik dostarczania
Jeden wiersz na próbę: który formularz, zgłoszenie, powiadomienie i zadanie, czy zostało wysłane czy zawiodło, która to była próba, odbiorcy, temat oraz kod i komunikat błędu. Nieudany wiersz można wysłać ponownie bezpośrednio z ekranu.

Dziennik zapisuje to, co zostało podjęte, a nie to, co zostało dostarczone. Poczta jest przekazywana WordPressowi, a stamtąd twojemu hostingowi; wiersz oznaczony jako wysłane oznacza, że opuścił stronę, a resztę może powiedzieć ci tylko odbicie po drugiej stronie.

Ochrona przed spamem

Od momentu instalacji działają dwie linie obrony: pole-pułapka (honeypot), którego osoba nigdy nie widzi, i kontrola czasu, która odrzuca formularz wysłany w mniej niż trzy sekundy. Żadna z nich nic nie kosztuje odwiedzającego i żadna nie psuje technologii wspomagających — dlatego są domyślne, zamiast być rodzajem wyzwania.

Poza tym wszystko jest opcjonalne i wyłączone, dopóki go nie włączysz: reCAPTCHA v2 i v3, hCaptcha, Cloudflare Turnstile i Akismet, a także reguły dotyczące słów kluczowych, adresów i krajów, które działają w całości na twoim własnym serwerze.

Zgłoszenie uznane za spam jest oznaczane, a nie usuwane. Trafienie w pułapkę-honeypot, nieudana lub nisko oceniona CAPTCHA oraz werdykt Akismet — wszystkie zapisują zgłoszenie ze statusem spam, gdzie możesz je przeczytać i zmienić zdanie — ponieważ koszt niesłusznie odrzuconego zapytania jest o wiele wyższy niż koszt wiersza, na który musisz spojrzeć. Dwoma wyjątkami są kontrola czasu i ograniczanie liczby żądań, które odrzucają żądanie, zanim jeszcze jakiekolwiek zgłoszenie w ogóle powstanie; nie ma czego oznaczać i nic nigdy nie zostało przyjęte, a potem wyrzucone.

Akismet to jedyna opcja, która wysyła przesłane wartości, adres IP odwiedzającego, identyfikator przeglądarki (user agent) i adres URL strony odsyłającej do zewnętrznej strony trzeciej. To przekazanie danych osobowych: poinformuj o tym odwiedzających, zanim to włączysz. Pozostali dostawcy otrzymują wyłącznie to, co zbiera ich własny skrypt, plus token weryfikacyjny, a adres IP odwiedzającego nie jest im przekazywany, chyba że zażąda tego filtr na twojej stronie.

Kontrola dostępu

Formularz może otwierać się i zamykać według harmonogramu, zatrzymywać się po określonej liczbie zgłoszeń, wymagać zalogowanego użytkownika lub konkretnej roli albo znajdować się za hasłem. O wszystkich czterech decyduje jedna funkcja, wywoływana z dwóch miejsc: raz, gdy formularz ma zostać wyrenderowany, i raz, gdy przychodzi zgłoszenie.

Dwa miejsca wywołania, jedna decyzja. Gdyby ukrywanie formularza i odrzucanie bezpośredniego zgłoszenia napisano osobno, z czasem by się rozjechały, a zamknięty formularz nadal przyjmowałby POST od kogoś, kto znał adres. Nic tu nie jest egzekwowane w przeglądarce.

Limit zgłoszeń jest sprawdzany jeszcze raz natychmiast po zapisaniu wiersza, przy czym licznik jest blokowany podczas odczytu. W przeciwnym razie dwoje odwiedzających naciskających wyślij w tej samej sekundzie przeszłoby kontrolę wykonaną, zanim którekolwiek z nich zostało policzone.

Przesyłanie plików

Przesłane pliki są trzymane poza zasięgiem paska adresu. Nazwa katalogu jest niemożliwa do odgadnięcia i niesie reguły odmowy dla Apache, IIS oraz indeksu katalogu, więc plik nie jest serwowany, nawet jeśli ktoś pozna jego ścieżkę.

Skarbiec znajduje się w twoim katalogu przesyłania, chyba że zdefiniujesz MEVVFORMS_FILE_VAULT_DIR i wskażesz miejsce poza katalogiem głównym witryny. Umiejscowienie poniżej katalogu głównego jest mocniejsze niż reguły odmowy, ponieważ przetrwa zresetowaną lub w ogóle nieodczytywaną konfigurację serwera WWW. Jeśli twój host na to pozwala, ustaw to.

Plik jest oceniany na podstawie tego, co jest w środku, a nie nazwy, z jaką przyszedł. Pierwsze bajty są porównywane z tabelą znanych sygnatur, sygnatury plików wykonywalnych są odrzucane od razu, a plik jest skanowany pod kątem osadzonego skryptu, nawet gdy jego sygnatura wyglądała niewinnie. Rozszerzenie to tylko twierdzenie tego, kto przesłał plik.

Pobieranie odbywa się przez podpisany link, a nie przez ścieżkę. Podpis obejmuje plik, osobę i termin ważności — domyślnie piętnaście minut i nigdy więcej niż dobę — a pobieranie i tak ponownie sprawdza, czy osoba ma do tego prawo, nawet gdy link nadal mieści się w swoim oknie czasowym. Link przekazany komuś innemu nie zadziała dla tej osoby.

Widoki front-endowe

Zgłoszenia można publikować z powrotem na stronie jako widok: siatkę, tabelę, kalendarz, oś czasu lub mapę. Widoki umieszcza się za pomocą [mevvforms_view id="12"] lub bloku MevvForms View, a przypięcie pojedynczego rekordu do strony to jedynie kwestia wskazania zgłoszenia z nazwy.

Mapa nie łączy się z żadną zewnętrzną usługą. Nie ma kafelków do pobrania, klucza do zdobycia ani zapytania geokodującego: punkty są rysowane jako osadzona grafika wektorowa na twojej własnej stronie, a współrzędne są dodatkowo wypisane jako tekst poniżej dla każdego, kto nie może zobaczyć rysunku. Wygląda skromniej niż mapa kafelkowa, a w zamian żaden adres odwiedzającego nie trafia do firmy mapowej za pośrednictwem strony, o której nawet nie wiedział, że ma na sobie mapę.

Prywatność i przechowywanie danych

MevvForms jest zarejestrowany we własnych narzędziach WordPressa do eksportu i usuwania danych osobowych, więc żądanie danych obsłużone przez WordPressa znajduje zgłoszenia, częściowo ukończone zgłoszenia i pliki bez konieczności, by ktokolwiek pamiętał o sprawdzeniu drugiego ekranu.

Czas przechowywania ustawia się dla każdego formularza jako liczbę dni — zero oznacza przechowywanie na zawsze, a maksimum to dziesięć lat. Stosuje go zadanie uruchamiane co godzinę.

Zanim zmiana czasu przechowywania zostanie zapisana, ekran mówi, ile zgłoszeń kwalifikowałoby się dzięki niej do trwałego usunięcia. Liczba jest wyliczana najpierw, a usunięcie to osobny, osobno potwierdzany krok. Wpisanie 30 w polu nigdy nie powinno być tym samym gestem, co zniszczenie czterech tysięcy rekordów.

Analityka formularza

Analityka odpowiada na jedno pytanie — gdzie ludzie rezygnują z tego formularza — i jest wyłączona, dopóki jej nie włączysz i nie wskażesz formularzy, które może mierzyć. Dopóki jest wyłączona, nic nie jest zapisywane, żaden skrypt nie jest dodawany do twoich stron i w ogóle nie istnieje żaden publiczny punkt końcowy.

Po włączeniu prowadzi dwie tabele dziennych liczników: na formularz — wyświetlenia, rozpoczęcia, zgłoszenia i porzucenia; na pole — porzucenia na tym polu, liczbę pozostawień pustym, błędy walidacji, łączny czas skupienia i liczbę odwiedzających, którzy się na nim skupili.

Nie tworzy się żaden identyfikator odwiedzającego i nie ustawia się żadnego pliku cookie. Tabele nie mają kolumny na adres IP, użytkownika, e-mail, sesję, odcisk cyfrowy, adres odsyłający ani przesłaną wartość — to kształt schematu sprawia, że wiersz jest nieidentyfikowalny, a nie obietnica, że nikt nie zajrzy. Sygnał z przeglądarki trafia na twoją własną stronę i jest uwierzytelniany krótkotrwałym biletem samego formularza, identycznym dla każdego odwiedzającego ten formularz. Ponieważ wiersze są zagregowane, eksport danych osobowych nie znajduje niczego do wyeksportowania, a na żądanie usunięcia odpowiada się linią mówiącą właśnie to.

Generowanie formularza za pomocą AI

Możesz opisać formularz jednym zdaniem i mieć pola rozłożone za ciebie. Obsługiwane są trzy połączenia: Ollama i LM Studio, które działają na twojej własnej maszynie lub twoim własnym serwerze, oraz punkt końcowy zgodny z OpenAI dla każdego, kto woli korzystać z hostowanego modelu z własnym kluczem.

  • W żadnym miejscu wtyczki nie ma limitu, kredytów ani licznika użycia — nie ma czego wyczerpać, ponieważ model nie jest nasz.
  • Przy Ollama lub LM Studio opis twojego formularza nigdy nie opuszcza maszyny, na której działa model.
  • Bez skonfigurowanego połączenia funkcja w ogóle się nie pokazuje i nie jest wykonywane żadne żądanie. Nie ma hostowanego rozwiązania zapasowego czekającego, by przypadkiem zostało użyte.

Wklejony klucz jest przechowywany w jednej opcji WordPressa, która nie jest ładowana na każdej stronie, a ekran pokazuje go potem zamaskowanego — ale jest przechowywany dokładnie tak, jak go wpisałeś, bez szyfrowania. Może go odczytać wszystko, co ma dostęp do bazy danych. Używaj klucza ograniczonego do tego, czego rzeczywiście potrzebuje, i wymień go, jeśli strona zmieni właściciela.

To, co wraca, jest wersją roboczą. To układ wyjściowy do poprawienia, a nie formularz do opublikowania bez czytania — a wygenerowane pole nie ma pojęcia, czego twoje prawo wymaga, byś zapytał, ani czego kazało pominąć.

Import z innej wtyczki formularzy

Formularze można importować z siedmiu innych wtyczek: Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Ninja Forms i SureForms.

  • Źródło jest wyłącznie odczytywane. Import niczego w innej wtyczce nie zmienia, nie dezaktywuje ani nie usuwa, a jej własne dane pozostają dokładnie tam, gdzie były.
  • Wszystko, czego nie da się przenieść, jest wypisane wraz z powodem. Import odmawia zapisu, dopóki nie zobaczysz tej listy i jej nie zaakceptujesz — cichy, częściowy import to sposób, w jaki brakujące powiadomienie zostaje odkryte trzy tygodnie później przez klienta, który nigdy nie dostał odpowiedzi.
  • Stare shortcody nadal działają. Gdy migracja jest aktywna, na shortcode wtyczki źródłowej odpowiada MevvForms, więc strony, których nigdy nie edytowano, nadal pokazują działający formularz. Jeśli ten shortcode zajęło już coś innego, MevvForms zostawia go w spokoju.

Trzymaj wtyczkę źródłową zainstalowaną, dopóki sam nie wyślesz nowego formularza i nie zobaczysz zgłoszenia oraz powiadomienia. Wycofanie się jest łatwe, dopóki oryginał wciąż tam jest, a niewygodne, gdy go już nie ma.

Odwracalna migracja z wtyczki WPForms

Migracja zaczyna się w trybie tylko do odczytu. Podgląd wymienia zmapowane pola, powiadomienia, potwierdzenia, osadzenia i nieobsługiwane ustawienia. Zastosowanie tworzy albo aktualizuje jeden przygotowany formularz MevvForms i zapisuje skrót źródła. Nie usuwa danych wtyczki WPForms, rewizji, tabel ani treści stron.

  1. Przed zastosowaniem wymagaj dokładnego podglądu.
  2. Zaimportuj formularz jako przygotowany i ponownie porównaj skróty źródła.
  3. Uruchom bramkę sprawności przejścia: publikacja, renderowanie, podpisane zgłoszenie testowe, lokalny wpis i powiadomienie w kolejce.
  4. Źródłową wtyczkę można wyłączyć dopiero po przejściu tych sprawdzeń.
  5. Jeżeli którekolwiek sprawdzenie się nie powiedzie, wycofanie przywraca poprzednią listę aktywnych wtyczek i zwraca zaimportowany formularz do szkiców.

Zmierzony inwentarz witryny mevvshop.com to jeden formularz źródłowy z 4 polami, 1 powiadomieniem, 1 potwierdzeniem i jednym działającym osadzeniem. Te liczby są bramką wydania dla tamtej witryny, a nie obietnicą dotyczącą każdego formularza WPForms.

Przyjmowanie płatności

Formularz może nieść cenę. Pola produktu zawierają pozycje, pola obliczenia i sumy wyliczają, ile jest należne, a zamówienie jest budowane na serwerze na podstawie schematu przy każdym zgłoszeniu.

  • Kwota nigdy nie pochodzi z przeglądarki. Suma, która przychodzi wraz ze zgłoszeniem, jest używana wyłącznie do porównania, a niezgodność odrzuca zgłoszenie, zamiast cicho je poprawiać — od odwiedzającego nigdy nie wolno pobrać kwoty innej niż ta, którą mu pokazano.
  • Pieniądze są przenoszone od początku do końca jako liczby całkowite w najmniejszej jednostce waluty. Żadna wartość pieniężna nigdzie nie przechodzi przez liczbę zmiennoprzecinkową.
  • Nic nie staje się opłacone bez odpowiedzi od dostawcy. Przeglądarka wracająca ze strony płatności przesuwa zamówienie co najwyżej do stanu „wymaga uzgodnienia”; status opłacone wymaga powiadomienia zweryfikowanego podpisem albo bezpośredniego zapytania skierowanego do dostawcy.
  • Dane karty nigdy nie docierają do strony. W kontrakcie płatności nie ma pola na numer karty, datę ważności ani kod bezpieczeństwa, ani odpowiedniej kolumny w bazie danych.
PayPal — bramka Pro
Pro dodaje bramkę PayPal zbudowaną na Orders v2. Zamówienie jest otwierane na twoim serwerze, odwiedzający zatwierdza je na własnej stronie PayPala, a pieniądze są pobierane w drodze powrotnej — albo, jeśli zamknie kartę wcześniej, gdy dotrze podpisane powiadomienie. Obie drogi kończą się w tym samym miejscu, więc zatwierdzone zamówienie nie zostaje bez pobrania z nieodebranymi pieniędzmi. Podwójne pobranie jest zabezpieczone dwukrotnie: wywołanie pobrania niesie stały identyfikator żądania, którego PayPal nie odtwarza, a odpowiedź „już pobrano” jest czytana jako praca już wykonana, a nie jako błąd. Zwroty, pełne lub częściowe, wystawia się z wpisu.
PayPal nie jest dostępny w Türkiye
PayPal nie działa w Türkiye i nie rozlicza się w lirach tureckich, więc ta bramka służy sprzedaży za granicę. Tureccy dostawcy płatności zostają tam, gdzie byli — na moście MevvPos — i nic się w tym nie zmienia.

Żadnej opłaty transakcyjnej, na żadnym poziomie. Kilka wtyczek formularzy pobiera procent od tego, co zbierasz na swojej darmowej warstwie płatności; test potwierdza, że kwota wysyłana do dostawcy dokładnie odpowiada sumie zamówienia.

Żadna płatność nie została wykonana od początku do końca, łącznie z PayPal. Za tym wszystkim nie stoi jeszcze żadne prawdziwe ani testowe konto akceptanta: każda ścieżka dostawcy jest ćwiczona wobec atrapy, a kształt żądania i powiadomienia sprawdzono wiersz po wierszu wobec opublikowanej dokumentacji dostawców, a nie wobec zakończonego wywołania. Do czasu zmiany traktuj funkcje płatności jako niepotwierdzone i nie stawiaj ich przed prawdziwymi klientami wyłącznie na nasze słowo.

Zapier i Make

Pro może też publikować wpisy do Zapiera i Make jako REST hooki. Zapier subskrybuje jeden z twoich formularzy, MevvForms zapamiętuje subskrypcję, a każdy kolejny wpis trafia do kolejki i zostaje do niego dostarczony. Wypisanie usuwa ją z powrotem, a osobna trasa próbek podaje Zapierowi niedawny wpis, żeby ekran mapowania pól pokazywał prawdziwe nazwy pól zamiast pustych pól.

  • Uwierzytelnianie to klucz witryny, który generujesz na ekranie ustawień Zapiera. To jedyne poświadczenie i identyfikuje witrynę, a nie osobę.
  • Dostarczenia wychodzą przez podpisany webhook i kolejkę zadań, z których darmowa edycja już korzysta. To nowy cel, a nie drugi system dostarczania, więc dziennik dostarczeń i ponowienia działają tak samo.
  • Bez ważnej licencji moduł w ogóle się nie uruchamia: nie rejestruje się żadna trasa, nie dodaje się żaden hook i nie istnieje ścieżka kodu mogąca sięgnąć zdalnego adresu.

Zapier i Make były osiągalne także bez Pro, ponieważ darmowa edycja potrafi wysłać metodą POST podpisany webhook pod dowolny adres. Pro usuwa część pośrednią — subskrypcji, mapowania pól i ponawiania nie budujesz już sam.

Salesforce

Pro może zamienić zgłoszenie w Salesforce Lead, Contact albo Case. Mapujesz pola formularza na pola obiektu na ekranie konektora, a każde zgłoszenie jest wysyłane przez tę samą kolejkę, z której korzystają inne konektory — więc awaria Salesforce opóźnia rekord, a nie gubi zgłoszenie.

  • Uwierzytelnianie odbywa się przez OAuth 2.0 z tokenem odświeżającym. Żadne hasło do Salesforce nie jest przechowywane na twojej witrynie.
  • Sandbox i produkcja to przełącznik, a nie drugi zestaw danych uwierzytelniających, o który trzeba dbać osobno.
  • Samo zgłoszenie w obu przypadkach pozostaje na twojej własnej witrynie. Wysłanie kopii do Salesforce nie oznacza przeniesienia tam twoich danych.

Przesyłanie plików do własnej pamięci obiektowej

Domyślnie magazyn plików znajduje się na twoim własnym dysku, poza katalogiem głównym witryny. Pro może zamiast tego przenieść go do dowolnego repozytorium zgodnego z S3 — AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2 albo Wasabi — samodzielnie podpisując każde żądanie, dzięki czemu żaden zewnętrzny SDK nigdy nie widzi zgłoszeń.

Zmienia się to, gdzie leżą bajty, a nie to, kto może je pobrać. Pliki są nadal udostępniane wyłącznie przez link ograniczony czasowo, powiązany z jedną osobą, a darmowa wtyczka nadal decyduje, kto może go otrzymać. Przeniesienie magazynu nie przenosi kontroli uprawnień.

Języki

Wraz z wtyczką dostarczanych jest dziewiętnaście lokalizacji WordPressa: niemiecki (Niemcy, formalny niemiecki i Szwajcaria), angielski, hiszpański (Hiszpania, Meksyk, Argentyna, Chile, Kolumbia), francuski, włoski, japoński, niderlandzki (Holandia i Belgia), polski, portugalski (Brazylia i Portugalia), rosyjski i turecki. Dołączone są edytowalne katalogi źródłowe, więc tłumaczenie można poprawić na własnej stronie.

Turecki i angielski to dwa języki, które zostały przeczytane linijka po linijce. Pozostałe są kompletne, ale nie wszystkie przeszły jeszcze przez człowieka; jeśli jakiś ciąg brzmi w twoim języku dziwnie, to właśnie z tego powodu, a katalog jest po to, żeby to poprawić.

Granica między wersją darmową a Pro

Niezawodne środowisko uruchomieniowe należy do wersji darmowej, a wraz z nim niemal wszystko z tej strony: schemat, wszystkie trzydzieści osiem typów pól, dostępny renderer, walidacja po stronie serwera i logika warunkowa, formularze wieloetapowe z krokiem podsumowania i trybem konwersacyjnym, zapisz-i-wróć, lokalne zgłoszenia z eksportem CSV i ścieżką audytu, notatki administracyjne i proces zatwierdzania, kolejka powiadomień wraz z dziennikiem dostarczeń, wychodzące webhooki podpisane HMAC, pełny zestaw antyspamowy, kontrola dostępu, sejf plików, widoki na froncie, narzędzia retencji i prywatności, analityka, generowanie z użyciem SI, importery dla siedmiu wtyczek oraz płatności jednorazowe bez prowizji.

Pro dodaje nazwane konektory usług: Mailchimp, HubSpot, Brevo, ActiveCampaign, Airtable, Notion, Google Sheets, Discord, Telegram i Slack, każdy mówiący własnym kształtem danej usługi, a do tego bramkę PayPal, konektor Zapier i Make zbudowany na REST hookach, płatności cykliczne, kody rabatowe i płatności częściowe. Zwróć uwagę, co to nadal znaczy: darmowa edycja już wysyła metodą POST podpisany webhook w dowolne miejsce, więc Zapier, Make i wszystko, co napiszesz sam, pozostają osiągalne bez Pro — Pro usuwa część pośrednią: subskrypcję, mapowanie pól i ponawianie, które inaczej musiałbyś napisać sam. Bramką licencyjną jest własna kontrola startu modułu: bez ważnej licencji nie ładuje się żadna klasa konektora, nie rejestruje się żaden filtr zadań i żadne zdalne wywołanie nie może nastąpić.

Pozycja z mapy drogowej nie jest reklamowana jako działająca możliwość. Zanim zbudujesz formularz wokół modułu Pro, sprawdź zainstalowaną wersję i informacje o wydaniu.

Rozwiązywanie problemów i wycofanie zmian

Stary shortcode jest pusty
Upewnij się, że identyfikator źródłowy ma aktywne mapowanie migracji i że shortcode wpforms nie należy do innej wtyczki.
Zgłoszenie informuje o wygaśnięciu sesji
Przeładuj stronę i wyślij zgłoszenie względem najnowszej opublikowanej rewizji.
Powiadomienie czeka
Otwórz stan kolejki, popraw trwały błąd konfiguracji albo pozwól na zaplanowane ponowienie przy przejściowym błędzie transportu.
Przejście nie wyłączyło wtyczki WPForms
Przeczytaj wynik sprawdzenia. Bramka bezpieczeństwa zachowała lub przywróciła wtyczkę WPForms, ponieważ nie powiodła się weryfikacja renderowania, wysyłki, zgłoszenia albo zadania.
Pole, którego odwiedzający nie widział, i tak przyszło
To właśnie tam decyduje serwer. Warunki są ponownie oceniane przy zgłoszeniu, więc wartość wysłana dla ukrytego pola jest tam odrzucana — sprawdź sam warunek, a nie przeglądarkę.
Tureckie znaki są zepsute w CSV
Plik niesie znacznik kolejności bajtów i jest w UTF-8. Arkusz kalkulacyjny, któremu kazano zaimportować go jako coś innego, i tak pokaże go błędnie; otwórz go bezpośrednio, zamiast przez kreatora importu z już wybranym kodowaniem.
Link do pobrania mówi, że wygasł
Linki są domyślnie ważne piętnaście minut i są związane z osobą, która o nie poprosiła. Wygeneruj nowy z poziomu zgłoszenia; link nie może zostać przekazany współpracownikowi.
Panel AI nie jest widoczny
Nie skonfigurowano żadnego połączenia. Panel jest ukryty, zamiast być pokazany zepsuty, i nic nigdzie nie jest wysyłane, dopóki jest ukryty.
Pozycja menu otwiera pusty ekran
Niektóre pozycje w menu to zastępniki dla ekranów, które nie zostały jeszcze zbudowane. Pusty ekran nie oznacza uszkodzonej instalacji.

Do wsparcia podaj wersje wtyczki, WordPress i PHP oraz bezpieczny kod błędu. Przed wysłaniem dzienników usuń wartości pól, dane klientów, tokeny sesji, wartości nonce i klucze licencji.

Aktualizacje

Aktualizacje przychodzą przez sam WordPress. Wtyczka pyta nasz sklep, czy istnieje nowsza wersja, i przekazuje odpowiedź własnemu przepływowi aktualizacji WordPressa, więc nowe wydanie pojawia się na ekranie wtyczek ze zwykłym przyciskiem Aktualizuj, zamiast czekać, aż ktoś ręcznie pobierze zip. W darmowej edycji to żądanie niesie wyłącznie nazwę pakietu i zainstalowaną wersję — bez adresu witryny, bez adresu e-mail, bez klucza licencji i bez spisu wtyczek. Ponieważ nic w nim cię nie identyfikuje, zaufanie opiera się na podpisie: odpowiedź jest podpisana naszym kluczem Ed25519, a odpowiedź niepodpisana, źle podpisana, odtworzona ze starego znacznika czasu albo kierująca pobranie na host inny niż nasz zostaje odrzucona bez dotykania witryny.

Ograniczenia

Powiedziane wprost, żeby niczego na tej stronie nie trzeba było przyjmować na wiarę.

  • Funkcje płatności nie zostały zweryfikowane wobec prawdziwego ani testowego konta sprzedawcy. Są zbudowane zgodnie z dokumentacją dostawców i testowane wobec zastępczej warstwy transportowej.
  • W kreatorze nie ma cofania ani ponawiania. Drogą powrotną są wersje.
  • Wyjście PDF zależy od strony. Jeśli zainstalowana jest biblioteka PDF, MevvForms jej używa; jeśli nie, zamiast tego tworzy dokument do wydruku i pozostawia drukowanie przeglądarce. Żadna biblioteka PDF nie jest dołączona ani nie jest pobierana skądkolwiek.
  • Każda pozycja menu otwiera teraz prawdziwy ekran. Raporty, integracje, import i eksport, ustawienia, role oraz dzienniki były we wcześniejszych wydaniach elementami zastępczymi; od 1.1.0 każdy obsługiwany jest przez własny pakiet.
  • Skarbiec przesłanych plików domyślnie znajduje się w katalogu przesyłania i jest chroniony regułami odmowy, a nie swoim położeniem, chyba że sam wskażesz miejsce poza katalogiem głównym witryny.
  • Klucze AI są przechowywane dokładnie tak, jak zostały wpisane, bez szyfrowania. Na ekranie są zamaskowane i trzymane poza opcjami ładowanymi zawsze, co nie jest tym samym, co bycie nieczytelnym.
  • Klawiaturowy odpowiednik kreatora jest kompletny, ale niewielki. Przyciski obsługują zwykłe klawisze, a przenoszenie pola ma jeden skrót; nie ma większej mapy klawiszy do nauczenia się ani żadnej do odkrycia.

Tam, gdzie ta strona mówi, że coś zostało zmierzone, zostało to zmierzone. Tam, gdzie mówi, że coś nie zostało udowodnione, to nie skromność — oznacza to, że test jeszcze nie istnieje, i powinieneś traktować to twierdzenie jako niedokończone.