如何在按钮单击时发送 wp_mail? [英] How to send wp_mail on button click?

查看:29
本文介绍了如何在按钮单击时发送 wp_mail?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在我的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆