Salvare i dati di un form personalizzato nel database

31 lug 2018, 23:18:46
Visualizzazioni: 22.6K
Voti: 3

Sono un principiante di WordPress. Ho creato un form personalizzato in WordPress e ho bisogno di sapere dove inserire il codice PHP WPDB per salvare i dati del mio form.

Ho provato a inserirlo direttamente nella mia pagina ma non ha funzionato.

Tutte le ricerche che ho fatto dicono di non inserirlo nel file functions.php quindi dove devo metterlo?

Ecco il codice che ho inserito nella mia pagina:

Codice del Form

<form id="myForm" name="myform">
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Seleziona Marca --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Invia" />

</form>

Codice PHP

<?php
    global $wpdb; 
    $inputValue = $_POST['newValue']; 
    $wpdb->insert( 
        'catalog', 
        array( 
            'brandSel' => $inputValue 
        ), 
        array( '%s' // se il tipo di campo è una stringa ) 
    );
?>
6
Commenti

Potresti aggiornare la tua domanda e aggiungere il codice attuale?

Krzysiek Dróżdż Krzysiek Dróżdż
31 lug 2018 23:31:07

<form id="myForm" name="myform"><select id="brandSel" size="1"> <option selected="selected" value="">-- Seleziona Brand --</option> <option>Abba</option> <option>AG Hair</option> <option>Agave</option>

</select>

<input type="submit" value="Invia" />

</form>

Abel Sanz Abel Sanz
31 lug 2018 23:42:47

OK, e dove vuoi memorizzare questi dati?

Krzysiek Dróżdż Krzysiek Dróżdż
31 lug 2018 23:44:13

In una tabella personalizzata che ho creato nel mio database WordPress

Abel Sanz Abel Sanz
31 lug 2018 23:45:39

Potresti anche aggiungere alla tua domanda il codice che usi per salvarlo in quella tabella personalizzata?

Krzysiek Dróżdż Krzysiek Dróżdż
31 lug 2018 23:46:34

global $wpdb; $inputValue = $_POST['newValue']; $wpdb->insert( 'catalog', array( 'brandSel' => $inputValue ), array( '%s' // se il tipo di campo è stringa ) );

Abel Sanz Abel Sanz
31 lug 2018 23:51:12
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 1
4

OK, ecco come dovresti farlo nel modo corretto...

Nel tuo file template inserisci il tuo modulo:

<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="">-- Seleziona Brand --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Invia" />
</form>

E nel file functions.php (o nel tuo plugin) dovrai aggiungere 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('/') ); // <-- qui va l'indirizzo del sito a cui l'utente dovrebbe essere reindirizzato dopo l'invio del modulo
    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' );
1 ago 2018 00:07:55
Commenti

Userò un plugin, ma quindi dove devo mettere "admin_post_{action}:"?

Abel Sanz Abel Sanz
1 ago 2018 00:16:15

Puoi metterlo nel functions.php del tuo tema. Ma se quel form dovrebbe essere processato da un plugin, allora questo codice dovrebbe essere nel tuo plugin...

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2018 00:18:54

@AbelSanz Ciao, ti è stato utile?

Krzysiek Dróżdż Krzysiek Dróżdż
1 ago 2018 12:38:09

Non riesco a capire dove inserire la funzione. Sto usando il plugin "Header and Footer". Hai qualche idea?

Abel Sanz Abel Sanz
3 ago 2018 19:35:32