从profile.php页面发送带有wp_mail的电子邮件

时间:2019-07-27 13:45:38

标签: php wordpress

我需要在profile.php页面中为后端的每个用户添加一个按钮,以便通过php发送电子邮件。 当我单击登录的个人资料用户中的按钮时,我设法正确执行了此操作,但是当我尝试在其他用户中执行此操作时,出现了wordpress错误“无效的用户ID” 我正确使用了钩子show_user_profile和edit_user_profile,但我认为POST方法存在一些问题。 解决此问题后,我需要用我所关注的用户电子邮件来动态更改电子邮件。

    function fileEmailNotification(WP_User $user) {

        ?>
    <h2>Invia notifica file</h2>
    <?php

    if(isset($_POST['submit']))
    {
        $to      = 'XXX@email.it';
        $subject = 'XXX';
        $body = 'XXX';
        $headers = 'Content-type: text/html;charset=utf-8' . "\r\n";
        $headers .= 'From: XXX <XXX@XXX.it>' . "\r\n";   

        wp_mail( $to, $subject, $body, $headers );

        echo "<script type='text/javascript'>alert('Email Sent');</script>";
    }
        submit_button('Invia notifica');
    ?>  <form action="" method="post">
        </form>
        <?php

}
add_action('show_user_profile', 'fileEmailNotification');
add_action('edit_user_profile', 'fileEmailNotification');

1 个答案:

答案 0 :(得分:0)

它仅在您编辑自己的个人资料时有效,因为在编辑其他人(而非登录用户)的个人资料时,表单中缺少两个参数:

这2个字段: user_id _wp_http_referer

您可以像这样将它们添加到表单中:

<form action="" method="POST">
    <?php 
    $logged_in_user_id = get_current_user_id();
    if ($logged_in_user_id != $user->ID) : ?>
    <input type="hidden" name="user_id" value="<?= $user->ID ?>"
    <?= wp_referer_field(); ?>
    <?php endif; ?>
</form>

但是,我注意到这段代码在默认的个人资料编辑表单中添加了一个表单,我认为这会给您带来麻烦。

我建议您使用链接到ajax调用的简单按钮。