I'm building an options page in my WordPress plugin, I've got a form with to, from, subject & message with a save and send button.
The idea is you fill in the to, from, subject and message click save then click send to send the message. I'm having trouble trying to run the send function on button click.
I've checked out: Wordpress Plugin: Call function on button click in admin panel
Also checked out Is this the right way to execute some PHP in my plugin after a button click on an options page?
My code is as follows:
add_action('admin_menu', 'custom_mail_menu');
function custom_mail_menu() {
//create new top-level menu
add_options_page('Custom Mail Settings', 'Custom Mail Settings', 'administrator', __FILE__, 'custom_mail_settings_page');
//call register settings function
add_action( 'admin_init', 'custom_mail_settings' );
}
function custom_mail_settings() {
//register our settings
register_setting( 'custom-mail-settings-group-15167', 'custom_mail_to' );
register_setting( 'custom-mail-settings-group-15167', 'custom_mail_from' );
register_setting( 'custom-mail-settings-group-15167', 'custom_mail_sub' );
register_setting( 'custom-mail-settings-group-15167', 'custom_mail_message' );
}
function sendMail() {
$sendto = esc_attr( get_option('custom_mail_to') );
$sendfrom = esc_attr( get_option('custom_mail_from') );
$sendsub = esc_attr( get_option('custom_mail_sub') );
$sendmess = esc_attr( get_option('custom_mail_message') );
$headers = "From: Wordpress <" . $sendfrom . ">";
wp_mail($sendto, $sendsub, $sendmess, $headers);
}
function custom_mail_settings_page() {
if (!current_user_can('manage_options')) {
wp_die( __('You do not have sufficient pilchards to access this page.') );
}
?>
<div class="wrap">
<h2>Custom Mail Settings</h2>
<form method="post" action="options.php">
<?php settings_fields( 'custom-mail-settings-group-15167' ); ?>
<?php do_settings_sections( 'custom-mail-settings-group-15167' ); ?>
<table class="form-table" style="width: 50%">
<tr valign="top">
<th scope="row">To</th>
<td>
<input style="width: 100%" type="text" name="custom_mail_to" value="<?php echo esc_attr( get_option('custom_mail_to') ); ?>" />
</td>
</tr>
<tr valign="top">
<th scope="row">From</th>
<td>
<input style="width: 100%" type="text" name="custom_mail_from" value="<?php echo esc_attr( get_option('custom_mail_from') ); ?>" />
</td>
</tr>
<tr valign="top">
<th scope="row">Subject</th>
<td>
<input style="width: 100%" type="text" name="custom_mail_sub" value="<?php echo esc_attr( get_option('custom_mail_sub') ); ?>" />
</td>
</tr>
<tr valign="top">
<th scope="row">Message</th>
<!-- <td><input type="text" name="custom_mail_message" value="?php echo esc_attr( get_option('custom_mail_message') ); ?>" /></td> /-->
<td>
<textarea style="text-align: left;" name="custom_mail_message" rows="10" cols="62"><?php echo esc_attr( get_option('custom_mail_message') ); ?></textarea>
</td>
</tr>
<tr>
<td></td>
<td><?php submit_button('Save'); ?><td><?php submit_button('send'); ?></td></td>
</tr>
</table>
</form>
</div>
So my question is: How would I run the sendMail()
function when the send button is clicked in my form with the supplied values from the form ?