3

I am a newbie to WordPress. I've created a custom form in WordPress and I need to know where to put the WPDB PHP code to save my form data.

I tried putting it directly in my page but that didn't work.

All of the research I've looked up says not to enter it in the function file so where do I put it?

Here is the code I put in my page:

Form Code

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

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

</form>

PHP Code

<?php
    global $wpdb; 
    $inputValue = $_POST['newValue']; 
    $wpdb->insert( 
        'catalog', 
        array( 
            'brandSel' => $inputValue 
        ), 
        array( '%s' // if the field type is string ) 
    );
?>
  • Could you update your question and add your current code? – Krzysiek Dróżdż Jul 31 '18 at 20:31
  • <form id="myForm" name="myform"><select id="brandSel" size="1"> <option selected="selected" value="">-- Select Brand --</option> <option>Abba</option> <option>AG Hair</option> <option>Agave</option> </select> <input type="submit" value="submit" /> </form> – Abel Sanz Jul 31 '18 at 20:42
  • OK, and where do you want to store that data? – Krzysiek Dróżdż Jul 31 '18 at 20:44
  • In a costum table I created in my wordpress database – Abel Sanz Jul 31 '18 at 20:45
  • Could you also add to your question the code you use for saving it in that custom table? – Krzysiek Dróżdż Jul 31 '18 at 20:46
1

OK, so here is how you should to this proper way...

In your template file you put your form:

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

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

And in functions.php file (or in your plugin) you'll have to add 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('/') ); // <-- here goes address of site that user should be redirected after submitting that form
    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' );
| improve this answer | |
  • I'll be using a plugin but so where do I put the "admin_post_{action}:"? – Abel Sanz Jul 31 '18 at 21:16
  • You can put it in functions.php of your theme. But if that form should be processed by a plugin, then this code should be in your plugin... – Krzysiek Dróżdż Jul 31 '18 at 21:18
  • @AbelSanz Hi, did it help you? – Krzysiek Dróżdż Aug 1 '18 at 9:38
  • I can't figure out where to put the function. I'm using "Header and Footer " plugin. Any ideas? – Abel Sanz Aug 3 '18 at 16:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.