I am stuck in form handling while developing WordPress Plugin. I face two problems and after Googling found some solutions to handle form in the WordPress plugin.
There are three ways to handle form in WordPress Plugin.
In the core PHP form handling the form look like
<form name="Form1" action="form_save.php">
<input name="text" value=""/>
<input name="submit" value="submit"/>
</form>
Now, here is the problem how to get the path of the script I develop which is saved in my WordPress plugin folder i.e. “form_save.php”
This can be achieved by the built-in WordPress function plugins_url. This function retrieves the absolute URL to the plugins
<form action="<?php echo plugins_url( 'form_save.php', __FILE__ ); ?>" method="post" >
<input name="text" value=""/>
<input name="submit" value="submit"/>
</form>
Before starting the admin-post.php method of submitting form request, check the form below
<form action="<?php echo admin_url( 'admin-post.php'); ?>" method="post" >
<input name="text" value=""/>
<input name='action' value='form_handle'/>
<input name="submit" value="submit"/>
</form>
You can use this hook to implement custom handlers for your own GET and POST requests. The admin post_ hook has the format “admin post $action,” where $action is the ‘action’ argument of your GET or POST request.
add_action( 'admin_post_form_save', 'form_save' );
function form_save() {
include("form_save.php");
die(); // must exit
}
Here when the user clicks on submit button, It will call the admin-post.php generic function whose action is defined using add_action (‘admin_post_form_save’, ‘form_save’). This will call the form_save function.
And all the form handling is done in the form_save.php script which is included in the function.
the job is not done. Here are some questions which I face too.
Once the form_save script does its work, the next step is how to redirect back to the plugin page. Using the WordPress wp_redirect function we can redirect back to the plugin page.
<?php
wp_redirect(admin_url('admin.php?page=plugin_page'));
?>
In Form handling validation can be done at javascript. But, in my case, I have handled validation at the server. And, if there is an error it must return to the plugin page. The challenge is to pass parameters to the plugin page.
<?php
wp_redirect(admin_url('admin.php?page=scrapper&msg=1'));
?>
Simple, using the passing value in the query string and I can get the value on my plugin page.