如何在按钮单击时发送 wp_mail? [英] How to send wp_mail on button click?
问题描述
我正在我的 WordPress 插件中构建一个选项页面,我有一个包含 to、from、subject & 的表单.带有保存和发送按钮的消息.
想法是您填写收件人、发件人、主题和消息,单击保存,然后单击发送以发送消息.我在尝试在单击按钮时运行发送功能时遇到问题.
我已签出:Wordpress 插件:在管理面板中点击按钮调用函数
还检查了 这是在选项页面上单击按钮后在我的插件中执行某些 PHP 的正确方法吗?
我的代码如下:
add_action('admin_menu', 'custom_mail_menu');函数 custom_mail_menu() {//创建新的顶级菜单add_options_page('自定义邮件设置', '自定义邮件设置', '管理员', __FILE__, 'custom_mail_settings_page');//调用寄存器设置函数add_action('admin_init', 'custom_mail_settings');}函数 custom_mail_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');}函数 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 = "来自:Wordpress <".$sendfrom .">";wp_mail($sendto, $sendsub, $sendmess, $headers);}函数 custom_mail_settings_page() {if (!current_user_can('manage_options')) {wp_die( __('您没有足够的沙丁鱼访问此页面.') );}?><div class="wrap"><h2>自定义邮件设置</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">主题</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></表单>
所以我的问题是:当使用表单中提供的值在我的表单中单击发送按钮时,我将如何运行 sendMail()
函数?
您可以在您的函数中检查帖子提交:
在您的表单上,删除操作值 - 将其留空:
更改您的 submit_button
以便它可以将 send
值作为键发布,因为我们正在寻找 $_POST['send']
发送邮件:
<?php submit_button('Send', 'primary', 'send');?>
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 ?
You can check for post submission within your function:
<?php
function sendMail() {
if($_POST['send']) {
$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);
}
}
And on your form, remove the action value - keep it blank:
<form method="post" action="">
Change you submit_button
too so that it can post send
value as a key as we are looking for $_POST['send']
to send the mail:
<?php submit_button('Send', 'primary', 'send'); ?>
这篇关于如何在按钮单击时发送 wp_mail?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!