Cum să procesezi un formular personalizat în WordPress pentru trimiterea către altă pagină?

13 nov. 2018, 00:25:35
Vizualizări: 18.3K
Voturi: 4

Știu că în PHP pot pur și simplu să pun action egal cu un fișier random.php și să procesez datele acolo, dar cum pot în WordPress să folosesc o pagină existentă cu un template personalizat pentru a trimite un formular, astfel încât după trimiterea formularului pe o pagină, utilizatorul să fie redirecționat către altă pagină în WordPress cu toate credențialele introduse încă disponibile?

0
Toate răspunsurile la întrebare 1
6
<form action="<?php echo esc_url( admin_url('admin-post.php') ); ?>" method="post">
<input type="hidden" name="action" value="your_action_name">

Adaugă aceste elemente în formularul tău. Unde admin-post.php va procesa formularul tău. În acest caz, în funcție de valoarea your_action_name pe care o specifici, un action hook va fi declanșat. De exemplu, dacă adaugi un hook ca următorul în functions.php al temei tale sau în plugin-ul tău:

add_action( 'admin_post_nopriv_your_action_name', 'your_function_to_process_form' );

atunci pentru utilizatorii nelogati:

function your_function_to_process_form(){
// procesează formularul aici
}

va fi apelată. De acolo poți procesa formularul tău. Pentru utilizatorii logați, trebuie să redenumești acțiunea în admin_post_your_action_name în loc de admin_post_nopriv_your_action_name. Ține minte că admin_post_ sau admin_post_nopriv_ sunt disponibile în admin-post.php pentru a do_action acțiunea corespunzătoare. Orice adaugi la sfârșitul lui admin_post_nopriv_ sau admin_post_ va formula un action hook. Acesta trebuie implementat prin add_action(). Dacă transmiți contactform ca acțiune ascunsă, atunci action hook-ul tău va fi fie admin_post_nopriv_contactform, fie admin_post_contactform, fie ambele.

13 nov. 2018 01:15:12
Comentarii

Uau, mulți pași. Înțeleg tot în explicația ta, cu excepția unui lucru. Deci, dacă după trimiterea formularului vreau să redirecționez utilizatorul către o pagină nouă cu alt layout, cum fac asta? Pentru că, cum am spus, în PHP simplu pun alt nume de fișier în action și scriu structura HTML în acel fișier nou. Aici spui să pun admin-post.php și să specific hooks în functions.php. Dar unde pun URL-ul unei pagini noi cu HTML și stiluri noi pentru a fi redirecționat utilizatorul?

Limpuls Limpuls
13 nov. 2018 01:26:29

poți folosi wp_redirect( 'locația ta' );. Pune-l la sfârșitul funcției tale după ce ai procesat formularul.

user119247 user119247
13 nov. 2018 01:29:45

În functions.php?

Limpuls Limpuls
13 nov. 2018 01:30:14

function your_function_to_process_form(){ //fă procesarea formularului tău apoi wp_redirect( 'locația ta' ); }

user119247 user119247
13 nov. 2018 01:31:42

Mulțumesc. Mă întreb doar de ce exact trebuie făcut așa. Doar trimiterea către admin-post.php. Mă întreb de ce către acesta și nu altceva. Este doar modul în care WordPress funcționează și gestionează formularele personalizate? Aș dori să citesc orice resurse despre asta dacă ai.

Limpuls Limpuls
13 nov. 2018 01:34:01

Dacă vrem să duplicăm formularul în altă parte, aceeași acțiune ne va ajuta. Și WordPress vine cu acest fișier care îți oferă hook-ul potrivit pentru a urma natura sa bazată pe evenimente. Pentru mai multe informații poți urmări link. mulțumesc

user119247 user119247
13 nov. 2018 01:40:30
Arată celelalte 1 comentarii