Remindere email workshop-uri
Plugin-ul poate trimite automat emailuri de reminder participanților înscriși la un workshop, la un interval configurabil înainte de desfășurarea acestuia.

Configurare per workshop
Fiecare workshop are propria configurație de remindere, accesibilă la Dentisity → Workshop-uri → [Workshop] → Remindere email.
Adăugarea unui reminder
Apasă + Adaugă reminder: apare un rând nou și se deschide direct editorul de email, cu textul implicit al reminderului.
| Câmp | Descriere |
|---|---|
| Înainte de workshop / Dată fixă | Reminder relativ (ore și minute înainte de începerea workshop-ului) sau la o dată și oră anume |
| ✉ Editează emailul | Deschide editorul de email; sub rând vezi subiectul ales |
| Șterge | Elimină reminderul |
Poți adăuga oricâte remindere pentru același workshop (ex.: 72 h, 24 h și 2 h înainte). Reminderele se salvează odată cu workshop-ul (Actualizează workshop); fiecare trebuie să aibă un mesaj.
Editorul de email
Reminderele folosesc același editor ca emailurile scrise participanților (vezi Emailuri către participanți):

- Subiect și mesaj, cu editor vizual și tab Cod.
- Inserează date personalizate — datele participantului (
[first_name],[participant_name],[pass_name]…) și ale workshop-ului ([workshop_name],[workshop_date],[workshop_time],[workshop_location],[workshop_room],[workshop_details],[lector_names],[lector_cards],[sponsor_names],[sponsor_cards]), completate pentru fiecare înscris la trimitere. - Inserează template implicit — înlocuiește textul cu emailul implicit al reminderului (îți cere confirmare).
- Șabloane ▾ — încarcă un șablon pentru remindere (sau unul marcat „Oriunde”) ori salvează textul de acum ca șablon; vezi Șabloane.
- Previzualizare — emailul exact cum îl primește fiecare înscris (săgețile trec de la unul la altul); Trimite-mi un test ți-l trimite ție. La un workshop pe care abia îl creezi (încă nesalvat), previzualizarea și testul folosesc ce ai completat deja în formular — titlul, data, orele, sala, lectorii, sponsorii și descrierea — și ți le arată pe numele tău, pentru că nu are încă înscriși.
- Limbi — bara de deasupra subiectului adaugă versiuni în alte limbi (de exemplu + English, care pornește de la textul implicit în engleză). Fiecare înscris primește reminderul în limba lui, sau în română dacă nu există o versiune în limba lui; sub rând vezi „și în EN”.
- Salvează — păstrează textul în rând; se salvează definitiv cu workshop-ul.
Un reminder salvat cu editorul vechi (un document HTML complet, cu propriul antet) se deschide ca cod și se trimite exact cum e. Butonul Înlocuiește cu template-ul nou din editor îl trece pe formatul nou.
Template implicit de email
Emailul are antetul cu logo și subsolul comune tuturor emailurilor (cu „Reminder workshop” deasupra textului și „Ești înscris la workshopul …” în subsol), iar textul implicit conține:
- imaginea de copertă a workshop-ului, dacă are;
- „Bună, [first_name]!”;
- eticheta de timp — ex. Peste 2 zile, Peste 24 ore, Reminder programat;
- titlul workshop-ului și tabelul cu data, ora și locația;
- lectorii și sponsorii, ca carduri (
[lector_cards],[sponsor_cards]); - „Ne vedem la Dentisity [edition]!” și invitația de a răspunde la email.
Datele workshop-ului se completează la trimitere, în limba fiecărui participant, așa că o schimbare de oră sau de sală ajunge și în reminderele deja scrise. Fiecare reminder trimis apare și în dosarul participantului, la Emailuri trimise.
Subiect implicit
Format: Dentisity {ediție} — Reminder workshop {interval}: {titlu workshop}
Programarea cron
Reminderele sunt programate prin WordPress Cron (wp_schedule_single_event). Un singur eveniment cron este creat per reminder per workshop (nu per participant). La ora de declanșare, plugin-ul preia toți membrii actuali ai grupului workshop-ului și trimite emailul către fiecare.
Consecință importantă: participanții înscriși după programarea inițială primesc în continuare reminderele, deoarece lista de destinatari este calculată la momentul trimiterii, nu la momentul programării.
Hook cron
dentisity_ws_reminder( $ws_id, $hours_before )
Înregistrat cu add_action('dentisity_ws_reminder', 'dentisity_handle_ws_reminder', 10, 2).
Când se (re)programează
| Eveniment | Acțiune |
|---|---|
| Salvare workshop cu date/remindere modificate | Ștergere evenimente existente + reprogramare |
| Salvare workshop fără modificări relevante | Nicio acțiune |
| Cumpărare workshop (prin coș) | Reprogramare pentru toți membrii (dacă reminderele nu există deja) |
WordPress Cron este pseudo-cron: se declanșează la vizitele pe site, nu la ore exacte. Pe site-uri cu trafic redus, reminderele pot fi trimise cu întârziere de câteva minute. Pentru precizie maximă, configurați un cron real pe server:
*/5 * * * * wget -q -O - https://dentisitycongress.ro/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Date stocate
Toate configurațiile de remindere sunt stocate ca meta pe produsul WooCommerce al workshop-ului:
| Meta cheie | Tip | Conținut |
|---|---|---|
dentisity_workshop_email_reminder | string | yes / no — activat |
dentisity_workshop_reminders | array | Lista obiectelor {hours, subject, body} |
Meta legacy (dentisity_workshop_reminder_hours_list, dentisity_workshop_reminder_hours) sunt citite ca fallback pentru workshop-uri vechi, dar nu mai sunt scrise.
Funcții relevante
| Funcție | Rol |
|---|---|
dentisity_ws_reminder_default_subject($ws_id, $hours) | Generează subiectul implicit |
dentisity_ws_reminder_default_body($ws_id, $hours, $user_id) | Generează textul implicit (fără antet/subsol, adăugate de dentisity_email_compose()) |
dentisity_send_workshop_reminder_email($user_id, $ws_id, $hours) | Trimite emailul către un utilizator |
dentisity_handle_ws_reminder($ws_id, $hours) | Handler cron — trimite către toți membrii grupului |
dentisity_schedule_ws_reminders($ws_id) | Programează evenimentele cron |
dentisity_clear_ws_reminders($ws_id) | Șterge evenimentele cron existente |