将自定义帖子类型字段发送到多个电子邮件

时间:2017-08-31 05:48:18

标签: php wordpress forms email

实际上我想要做的是我想将自定义字段值发送到电子邮件。

我在帖子类型中创建了一个简单的表单,只有在这个表单的前端显示,用户可以输入电子邮件和电话号码。提交后,一封邮件发送给网站所有者,一封邮件发送给业主,一封邮件发送给该特定用户的电子邮件ID。

这三封邮件都有不同的内容

现在问题是

  1. 当我提交时,没有。每个人收到的邮件等于没有。的帖子 例如我有3个帖子&当我点击一个项目并提交时,它会发送所有项目的详细信息。我希望将其限制为一个。

  2. 网站所有者和业主获取正确的信息,但最终用户无法获取自定义字段值,自定义字段来自高级自定义字段插件。

  3. 是否有人可以解决这些问题。?

    谢谢

    这是代码

        <div class="column one">
        <?php $pack= new WP_Query(array('post_type'=>'packer'));?>
    
        <?php while($pack-> have_posts()): $pack->the_post();?>
    
    <?php 
    
        $post = get_post( $post );
        $title = isset( $post->post_title ) ? $post->post_title : '';
        $usermail=$_POST['email'];
        $cellno=$_POST['cellno'];
        $phone=the_field('phone');
        $pdesc=the_field('description');
    
        if(isset($usermail) && isset($cellno)){
    
            $to = 'siteowner@site.com';
            $subject = 'New Enqiry for'. $title;
            $body ="The enquiry for $title <br>Customer email is: $usermail<br> Customer Phone is: $cellno";
            $headers = array('Content-Type: text/html; charset=UTF-8');
            wp_mail( $to, $subject, $body, $headers );
    
    
            $to = 'businessowner@business.co.in';
            $subject = 'New Customer Enquiry';
            $body ="The enquiry by $usermail <br>Cellno is: $cellno";
            $headers = array('Content-Type: text/html; charset=UTF-8');
            wp_mail( $to, $subject, $body, $headers );
    
    
            $to = $usermail;
            $subject = 'Details For $title';
            $body ="Phone $phone <br>Desc is: $pdesc";
            $headers = array('Content-Type: text/html; charset=UTF-8');
             wp_mail( $to, $subject, $body, $headers );
    
        }
    ?>
    
         <div class="column one-fourth">
            <h1><?= the_title();?></h1>
    
            <?php $post_id= get_post()->ID;?>
    
            <img src="<?php the_field('logo');?>" />
    
    
    
            <a href="#desc-<?= $post_id;?>" class="fancybox">
                <input type="button" name="Details" value="DON'T PRESS THIS BUTTON"/>
            </a>
            <div style="display:none" class="fancybox-hidden">
                <div id="desc-<?= $post_id;?>">
                        <?php the_field('description');?>
                    <?php the_field('phone');?>
    
                    <form action="" method="POST">
                    <input type="text" placeholder="Phone" name="cellno" id="cellno">
                    <input type="email" placeholder="Email" name="email" id="email">
                    <input type="submit" value="Send" name="send" id="send">
                    </form>
                </div>
            </div>                      
    
        </div>
    
    
    <?php endwhile; ?>
    

1 个答案:

答案 0 :(得分:0)

使用get_field()代替the_field()来正确分配变量。 the_回应它。

那是:

$phone = get_field('phone');
$pdesc = get_field('description');

电子邮件的问题是因为您在循环中发送了电子邮件。这意味着它正在检查是否为每个循环设置了if(isset($usermail) && isset($cellno)){,即帖子的数量。

通过传递帖子ID并确认它来解决此问题。 将当前的post_id添加到表单中:

<input type="hidden" name="postID" value="<?php echo $post_id; ?>">

并检查它是否等于循环中的当前帖子ID。

 if(isset($usermail) && isset($cellno) && isset($_POST['postID']) && $_POST['postID'] == $post->ID){