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 ) 
    );
?>
6
  • Could you update your question and add your current code? Commented Jul 31, 2018 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
    Commented Jul 31, 2018 at 20:42
  • OK, and where do you want to store that data? Commented Jul 31, 2018 at 20:44
  • In a costum table I created in my wordpress database
    – Abel Sanz
    Commented Jul 31, 2018 at 20:45
  • Could you also add to your question the code you use for saving it in that custom table? Commented Jul 31, 2018 at 20:46

1 Answer 1

3

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' );
4
  • I'll be using a plugin but so where do I put the "admin_post_{action}:"?
    – Abel Sanz
    Commented Jul 31, 2018 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... Commented Jul 31, 2018 at 21:18
  • @AbelSanz Hi, did it help you? Commented Aug 1, 2018 at 9:38
  • I can't figure out where to put the function. I'm using "Header and Footer " plugin. Any ideas?
    – Abel Sanz
    Commented Aug 3, 2018 at 16:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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