Salvarea datelor dintr-un formular personalizat în baza de date
Sunt începător în WordPress. Am creat un formular personalizat în WordPress și trebuie să știu unde să pun codul PHP WPDB pentru a salva datele din formular.
Am încercat să-l pun direct în pagina mea dar nu a funcționat.
Toate cercetările pe care le-am făcut spun să nu îl introduc în fișierul functions.php, așa că unde ar trebui să-l pun?
Iată codul pe care l-am pus în pagina mea:
Codul formularului
<form id="myForm" name="myform">
<select id="brandSel" size="1">
<option selected="selected" value="">-- Selectează Brand --</option>
<option>Abba</option>
<option>AG Hair</option>
</select>
<input type="submit" value="Trimite" />
</form>
Codul PHP
<?php
// Declarăm variabila globală wpdb
global $wpdb;
// Preluăm valoarea din POST
$inputValue = $_POST['newValue'];
// Inserăm în tabelul catalog
$wpdb->insert(
'catalog',
array(
'brandSel' => $inputValue
),
array( '%s' // dacă tipul câmpului este string )
);
?>

OK, deci iată cum ar trebui să faci acest lucru corect...
În fișierul tău de template, puneți formularul:
<form id="myForm" name="myform" action="<?php echo esc_attr( admin_url('admin-post.php') ); ?>" method="POST">
<input type="hidden" name="action" value="save_my_custom_form" />
<select id="brandSel" size="1">
<option selected="selected" value="">-- Selectează Brand --</option>
<option>Abba</option>
<option>AG Hair</option>
</select>
<input type="submit" value="trimite" />
</form>
Și în fișierul functions.php (sau în plugin-ul tău) va trebui să adaugi admin_post_{action}
:
function my_save_custom_form() {
global $wpdb;
$inputValue = $_POST['newValue'];
$wpdb->insert(
'catalog',
array( 'brandSel' => $inputValue ),
array( '%s' ),
);
wp_redirect( site_url('/') ); // <-- aici se adaugă adresa site-ului către care ar trebui redirecționat utilizatorul după trimiterea formularului
die;
}
add_action( 'admin_post_nopriv_save_my_custom_form', 'my_save_custom_form' );
add_action( 'admin_post_save_my_custom_form', 'my_save_custom_form' );

Voi folosi un plugin, dar unde anume trebuie să pun "admin_post_{action}:"?

Îl poți pune în functions.php al temei tale. Dar dacă acel formular ar trebui procesat de un plugin, atunci acest cod ar trebui să fie în plugin-ul tău...
