gpt4 book ai didi

php - 如何在单击按钮时发送 wp_mail?

转载 作者:搜寻专家 更新时间:2023-10-31 21:25:02 25 4
gpt4 key购买 nike

我正在我的 WordPress 插件中构建一个选项页面,我有一个表单,其中包含收件人、发件人、主题和消息以及保存和发送按钮。

想法是您填写收件人、发件人、主题和消息,然后单击“保存”,然后单击“发送”以发送消息。我在尝试在单击按钮时运行发送功能时遇到问题。

我已经 checkout :Wordpress Plugin: Call function on button click in admin panel

还检查了 Is this the right way to execute some PHP in my plugin after a button click on an options page?

我的代码如下:

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>

所以我的问题是:当使用表单提供的值在我的表单中单击发送按钮时,我将如何运行 sendMail() 函数?

最佳答案

您可以在您的函数中检查帖子提交情况:

<?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);
}
}

然后在您的表单上,删除操作值 - 将其留空:

<form method="post" action="">

也改变你的 submit_button 以便它可以将 send 值作为键发布,因为我们正在寻找 $_POST['send']发送邮件:

<?php submit_button('Send', 'primary', 'send'); ?>

关于php - 如何在单击按钮时发送 wp_mail?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com