Cum să procesezi un formular personalizat în WordPress pentru trimiterea către altă pagină?
Ș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?

<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.

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?

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

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

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.

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
