WP Manifestindependent plugin directory
manifest / integrations / everwebinar-form

EverWebinar Connect PRO self-updates

WordPress plugin: Everwebinar form integration

by important.is · github.com/lukelocksmith/everwebinar-form

0stars
0forks

Install

No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:

wp plugin install https://github.com/lukelocksmith/everwebinar-form/archive/refs/heads/main.zip

Ships its own WordPress updater (built-in updater), so new versions show up under Dashboard → Updates.

Antigravity EverWebinar Connect PRO - Dokumentacja Techniczna

1. Cel i Problem

Wtyczka rozwiązuje problem integracji Landingi.com z platformą EverWebinar w scenariuszu autowebinarów (Just-In-Time lub Recurring), gdzie standardowy widget EverWebinar (iframe) jest niewystarczający z powodu braku możliwości stylowania i ukrywania strefy czasowej.

Główne wyzwania techniczne, które rozwiązuje wtyczka:

  1. CORS (Cross-Origin Resource Sharing): EverWebinar API nie pozwala na bezpośrednie zapytania AJAX z domeny landingi.com.
  2. Bezpieczeństwo: Bezpośrednie odpytywanie API z poziomu przeglądarki wymagałoby zaszycia API_KEY w kodzie źródłowym strony, co jest krytycznym błędem bezpieczeństwa.

2. Architektura Rozwiązania

Wtyczka działa jako API Proxy (Bramka Pośrednicząca) zainstalowana na instancji WordPress klienta.

Przepływ danych (Data Flow):

  1. Frontend (Landingi): Skrypt JS wysyła zapytanie POST do endpointu WordPressa (/wp-json/ewf/v1/proxy). Przesyła webinar_id, embed_id oraz public_token (token publiczny).
  2. Middleware (WordPress Plugin):
    • Odbiera zapytanie.
    • Weryfikuje poprawność (czy podano Webinar ID).
    • Dokleja tajny API_KEY (przechowywany bezpiecznie w bazie WP, tabela wp_options).
    • Wysyła zapytanie backend-to-backend (via wp_remote_post) do EverWebinar API.
  3. EverWebinar: Zwraca harmonogram (schedules) lub potwierdzenie zapisu.
  4. WordPress: Przekazuje odpowiedź z powrotem do Frontendu, dodając nagłówki CORS tylko dla dozwolonych domen.

3. Struktura Wtyczki

Plik główny: everwebinar-form.php realizuje 7 funkcji:

A. Konfiguracja Globalna

  • Rejestruje stronę ustawień (ewf_settings).
  • Przechowuje API Key w opcji ewf_settings[ewf_api_key].
  • Lista dozwolonych domen w ewf_settings[ewf_allowed_origins].

B. Custom Post Type (ewf_webinar)

  • Służy do zarządzania webinarami.
  • Każdy post to jeden webinar.
  • Meta field _ewf_id przechowuje ID webinaru z platformy EverWebinar.
  • Meta field _ewf_public_token przechowuje publiczny token do proxy.

C. Generator Kodu (Metabox)

  • Automatycznie generuje gotowy snippet HTML/CSS/JS.
  • Wstrzykuje dynamicznie WEBINAR_ID, EMBED_ID, PUBLIC_TOKEN oraz URL endpointu (get_rest_url), dzięki czemu kod jest "portable".

D. REST API Endpoint (/ewf/v1/proxy)

  • Publicznie dostępny endpoint z kontrolą CORS.
  • Obsługuje akcję get_schedules: pobiera dostępne daty (wymusza timezone: GMT+1).
  • Obsługuje akcję register: zapisuje uczestnika.
  • Weryfikuje public_token i embed_id oraz ogranicza liczbę żądań (rate limit).

E. CORS Headers

  • CORS jest ograniczony do listy dozwolonych domen w ustawieniach.
  • Domena WordPressa jest zawsze dozwolona.

4. Instrukcja dla Programisty / Administratora

Instalacja

  1. Wgraj folder everwebinar-form do /wp-content/plugins/.
  2. Aktywuj wtyczkę w panelu WordPress.

Konfiguracja

  1. Wejdź w Webinary -> Ustawienia API.
  2. Wklej klucz API z panelu EverWebinar (zakładka Advanced -> API).
  3. Dodaj dozwolone domeny (originy), np. https://twoja-domena.pl.
  4. Użyj przycisku Testuj połączenie, aby sprawdzić klucz.

Dodawanie nowego webinaru

  1. Wejdź w Webinary -> Dodaj nowy.
  2. Kliknij Pobierz listę i wybierz webinar z EverWebinar. Pole ID jest ukryte, ale dostępne jako fallback (np. gdy API nie działa). Możesz też kliknąć Ustaw demo.
  3. Zapisz post.
  4. Skopiuj gotowy kod z sekcji "Gotowy kod na Landingi".
  5. Po aktualizacji wtyczki skopiuj snippet ponownie (token publiczny jest generowany automatycznie).

Pola formularza zapisu

  • API EverWebinar nie udostępnia listy pól formularza, więc ustaw je ręcznie w edycji webinaru.
  • Możesz włączać i oznaczać jako wymagane pola: nazwisko, kraj, stan/województwo, telefon, kod kraju telefonu oraz zgodę SMS/telefon (Twilio).
  • Pola imię i e-mail są zawsze włączone (wymagane przez API).

Modyfikacje Frontendowe

Kod JS w generatorze (funkcja ewf_code_callback) jest samowystarczalny (Vanilla JS). Nie wymaga jQuery. Style CSS (modal) są dołączone inline, ale można je przenieść do globalnego arkusza stylów Landingi, aby odchudzić kod.