【问题标题】:How can I create Wordpress contact page to work without using any plugins?如何在不使用任何插件的情况下创建 Wordpress 联系页面?
【发布时间】:2014-05-28 06:12:42
【问题描述】:

我正在尝试建立自己的联系页面,但我不想使用任何插件。任何人都可以告诉我如何使用您自己的新代码或作为对我在下面提到的代码的更正。 我也试过这个http://pastebin.ca/2332012 但收到消息未发送错误

我尝试了另一种成功发送电子邮件的方法,但我可以在我的 hotmail 中收到该邮件。

这是我的代码。 提前致谢。 验证部分

<?php
if(isset($_POST['submit'])) {
  if(trim($_POST['sender_name']) === '') {
    $nameError = 'Please enter your name.';
    $hasError = true;
  } else {
    $name = trim($_POST['sender_name']);
  }

  if(trim($_POST['sender_email']) === '')  {
    $emailError = 'Please enter your email address.';
    $hasError = true;
  } else if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,4}$/i", trim($_POST['sender_email']))) {
    $emailError = 'You entered an invalid email address.';
    $hasError = true;
  } else {
    $email = trim($_POST['email']);
  }

  if(trim($_POST['message']) === '') {
    $messageError = 'Please enter a message.';
    $hasError = true;
  } else {
    if(function_exists('stripslashes')) {
      $message = stripslashes(trim($_POST['message']));
    } else {
      $message = trim($_POST['message']);
    }
  }

if(trim($_POST['subject']) === '') {
    $subjectError = 'Please enter a subject.';
    $hasError = true;
  } else {
    if(function_exists('stripslashes')) {
      $subject = stripslashes(trim($_POST['subject']));
    } else {
      $subject = trim($_POST['subject']);
    }
  }

  if(!isset($hasError)) {
    $emailTo = get_option('tz_email');
    if (!isset($emailTo) || ($emailTo == '') ){
      $emailTo = get_option('admin_email');
    }
    //$subject = '[PHP Snippets] From '.$name;
    $body = "Name: $name \n\nEmail: $email \n\nMessage: $message\n\n Subject: $subject";
    $headers = 'From: '.$name.' <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

    wp_mail($emailTo, $subject, $body, $headers);
    $emailSent = true;
  }

} ?>

以上代码从 get_header() 部分开始

HTML:

<form action="<?php the_permalink(); ?>" method="post" accept-charset="utf-8" class="" id="contactForm"><div class="row">
  <div class="col-md-6">
     <div class="form-group">

          <label for="name">Name <span class="required">*</span></label>


      <input type="text" name="sender_name" value="" class="form-control" id="name" required="required" placeholder="Enter Your Name or Organization" rows="5" cols="80"  />
     </div>
     <div class="form-group">

            <label for="email">Email <span class="required">*</span></label>
            <div class="input-group">



       <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>


      <input type="text" name="sender_email" value="" class="form-control" id="email" required="required" placeholder="Enter Your Email id" rows="5" cols="80"  />      </div><!--input g ends  -->
     </div>
        <div class="form-group">
        <p>
              <label for="subject">Subject <span class="required">*</span></label>


              <br /><select name="subject" class = "form-control" id="subject" required="required">
<option value="" selected="selected">Select a subject</option>
<option value="value1">General Customer Service</option>
<option value="value2">Setup a meeting for collabration</option>
<option value="value3">Product Support</option>
<option value="value4">Suggestion</option>
</select>      </p>                                       
      </div>
  </div>

     <div class="col-md-6">

           <div class="form-group">

          <p>
                  <label for="message">Message <span class="required">*</span></label>


            <textarea name="message" cols="25" rows="9" class="form-control" id="message" required="required" placeholder="Write your message" ></textarea>          </p>
          </div>
    </div>

   <div class="col-md-12">

  <p>
          <br/><input type="submit" name="submit" value="Submit" class="btn btn-primary pull-right" id="btnContactUs"  />  </p>
  </div>
</div>
<input type="hidden" name="submitted" id="submitted" value="true" />
</form>

【问题讨论】:

  • 你的代码有问题吗?需要更具体地回答您的问题
  • @Andrew 我不太清楚。它给了我成功的消息,但即使在 1 小时后我也没有收到任何电子邮件。
  • @Robin 您是否遵循任何教程或创建了自己的教程?我想,有时本教程会对您有所帮助。链接:premium.wpmudev.org/blog/…

标签: javascript php html css wordpress


【解决方案1】:

复制 page.php 文件并将其名称更改为 page-contact.php 。 在&lt;?php get_header(); ?&gt; 之前添加此 PHP 代码:

<?php

      //response generation function

      $response = "";

      //function to generate response
      function my_contact_form_generate_response($type, $message){

        global $response;

        if($type == "success") $response = "<div class='success'>{$message}</div>";
        else $response = "<div class='error'>{$message}</div>";

      }

      //response messages
      $not_human       = "Human verification incorrect.";
      $missing_content = "Please supply all information.";
      $email_invalid   = "Email Address Invalid.";
      $message_unsent  = "Message was not sent. Try Again.";
      $message_sent    = "Thanks! Your message has been sent.";

      //user posted variables
      $name = $_POST['message_name'];
      $email = $_POST['message_email'];
      $message = $_POST['message_text'];
      $human = $_POST['message_human'];

      //php mailer variables
      $to = get_option('admin_email');
      $subject = "Someone sent a message from ".get_bloginfo('name');
      $headers = 'From: '. $email . "\r\n" .
        'Reply-To: ' . $email . "\r\n";

      if(!$human == 0){
        if($human != 2) my_contact_form_generate_response("error", $not_human); //not human!
        else {

          //validate email
          if(!filter_var($email, FILTER_VALIDATE_EMAIL))
            my_contact_form_generate_response("error", $email_invalid);
          else //email is valid
          {
            //validate presence of name and message
            if(empty($name) || empty($message)){
              my_contact_form_generate_response("error", $missing_content);
            }
            else //ready to go!
            {
              $sent = wp_mail($to, $subject, strip_tags($message), $headers);
              if($sent) my_contact_form_generate_response("success", $message_sent); //message sent!
              else my_contact_form_generate_response("error", $message_unsent); //message wasn't sent
            }
          }
        }
      }
      else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);

?>

然后,将此 HTML 代码作为联系表单放入此文件中:

<div id="respond">
            <?php echo $response; ?>
            <form action="<?php the_permalink(); ?>" method="post">
              <p><label for="name">Name: <span>*</span> <br><input type="text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
              <p><label for="message_email">Email: <span>*</span> <br><input type="text" name="message_email" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
              <p><label for="message_text">Message: <span>*</span> <br><textarea type="text" name="message_text"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
              <p><label for="message_human">Human Verification: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
              <input type="hidden" name="submitted" value="1">
              <p><input type="submit"></p>
            </form>
</div>

最后,这是表单的最小样式:

.error{
              padding: 5px 9px;
              border: 1px solid red;
              color: red;
              border-radius: 3px;
            }

            .success{
              padding: 5px 9px;
              border: 1px solid green;
              color: green;
              border-radius: 3px;
            }

            form span{
              color: red;
 }

参考:

http://premium.wpmudev.org/blog/how-to-build-your-own-wordpress-contact-form-and-why/

【讨论】:

  • @Pay4m 邮件未发送消息。我正在使用 WAMP。试图找出是它的 WAMP 服务器问题还是 WP 中的 PHP 代码
  • 这正是因为您在本地主机上。当您上传您的网站时,它将起作用。我遇到了同样的问题,它正在我的网站上运行
  • @Pay4m 如何使用此表单向具有编辑角色或编辑和管理员角色的用户发送电子邮件。我只知道管理员电子邮件的事情
【解决方案2】:

您应该为联系我们页面制作模板。只需在模板文件夹中创建一个 PHP 文件。在该文件中,您必须像这样编写两行代码。

/**
 * Template Name: Contact-us
 *
 *
 * @package ABC
 *
 * 
 */ 

然后,您必须在管理面板中创建新页面并分配此模板名称。然后填写联系我们的表格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多