如何以及为什么建立自己的WordPress联系表单


谈到从地上的WordPress建立联系人表格时,可以做到这一点.本文介绍了如何构建自己的联系表格-以及为什么应该的好处.
在本文中,我们将专注于在没有插件的情况下建立一件事:WordPress联系表格.
在WordPress中有希望的一切都有大量的插件,但是您可能会感到奖励和安全的建筑功能从头开始.
你可能会问为什么打扰?好,我们将覆盖一些原因.例如,很多时候人们不想用插件的UI弄乱,或者插件会比你想要它更多的方式.
本文封面:
- 为什么不使用插件?
- 入门创建自己的联系表单
- 构建表单逻辑
- 响应生成
- 人类验证
- 验证
这是一个很好的学习体验,你知道引擎盖下发生了什么,你正在获得另一个时间的技能.
但仍然...
为什么不仅使用插件?
如果我们没有提到我们的免费五星级的Frominator插件,我们会自行自然.由于其易用性,惊人的能力(例如电子商务,设计等),这是我们的表格创建了Go-toction(和推荐),并且更多.
所以,在进行为什么不使用插件之前,请记住,我们不说不要使用一个.插件像Frominator一样是一个很好的解决方案.
但是,有其他人可能不是.就像我们之前暗示的那样,学习创建自己的联系表格可能是一个令人敬畏的学习体验.
如果您想拍摄下降并创建自己的,这里有四种好原因,为什么插件对于简单的联系人形式可能不好:
- 插件包装比你(应该)照顾
- 使用UI构建一个简单的联系表单是矫枉过正的
- 了解引擎盖下的内容对您的知识有利,以及您的和平
- 默认样式表可以从内部杀死一个人.
甚至可能还有其他原因.例如,也许你不想要大量的功能.你只是想保留东西......简单.
但我需要所有这些功能!
真的吗?这不是Web 2.0了.复杂形式可以吓唬客户.那里有很多人.
你有多少次填写表格,只能被你必须投入的个人数据量屈服?它一直在发生.
用户甚至半途而废,然后被别的东西分散了分散注意力.人们这些天的关注跨度很短.因此,为了让您尽可能简单地让您的潜在客户和客户与您联系,您真的应该将您的联系表格剥离到骨骼中.
所以什么是绝对基本的?
姓名,电子邮件,消息和人类验证.但我认为你已经知道了.
这四个小比特的信息都像对博客的评论一样简单-你为什么要更加困难地联系?除非绝对需要,我认为我不认为我有没有提供更多信息的表格.
如果人们想要留下他们的电话号码和地址,他们将在消息中这样做.视觉提示如询问它们在窗体上方的简短段落中足够!
再次,我们的Forminator插件保持简单的东西.但是,好的,我们将是大胆的,大胆,从头开始创造一种形式.事情是...
肯定是从头划分的所有的痛苦?右?
不是真的.如果您患者患者将在半小时内通过本教程进行粉碎.所有它真的包括:
- 自定义模板文件
- 一些php
是的,就是这样.您可以处理显示表单,人力验证,验证,通过电子邮件发送管理员,并感谢读者在一个文件中取得触摸.
入门创建自己的联系表单
我们将从新的WordPress安装开始.如果你不确定如何教育自己的食谱.
要遵循良好的做法,只需一个样式表和自定义页面模板创建一个子主题.
在WP-Content/主题中,添加一个名为"联系人"的新文件夹.在此内部,创建两个新文件- style.css和page-contact-us.php.
style.css,粘贴以下内容:
/* Theme Name: Contact Form Page Template Theme URI: https://wpmudev.com/blog/ Description: A super simple, self-contained contact form you can drop into your existing theme. Author: Harley Author URI: https://wpmudev.com/ Template: twentytwelve Version: 0.1 */ @import url("../twentytwelve/style.css");
现在,您应该能够继续并激活测试站点上的主题,并准备好滚动.
下一步是创建一个页面,恰当地命名为"联系我们".这个名字很特别.它立即涉及我们以前称为页面-copter-us.php 的模板文件.创建自定义页面模板的解决方案不是Catch-All,只是一个常规的WordPress提供,我喜欢. page-about-us.php 将自动用于显示标题为"关于我们"的页面.它有点便宜!
如果您已创建 page-contact-us.php 并将其留空,请访问新创建的"联系我们"页面将产生一个空白页.
虽然没关系!用以下内容迅速填写,它会再次看起来像正常的页面.
<?php get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php while ( have_posts() ) : the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="entry-header"> <h1 class="entry-title"><?php the_title(); ?></h1> </header> <div class="entry-content"> <?php the_content(); ?> <p>FORM CODE GOES HERE</p> </div><!--.entry-content--> </article><!--#post--> <?php endwhile;//end of the loop.?> </div><!--#content--> </div><!--#primary--> <?php get_sidebar(); ?> <?php get_footer(); ?>
好吧.现在我们有一个基本页面,现在是时候以一个非常简单的形式删除.
替换表单代码将在此段落段落如下:
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cstyle%20type%3D%22text%2Fcss%22%3E%0A%20%20.error%7B%0A%20%20%20%20padding%3A%205px%209px%3B%0A%20%20%20%20border%3A%201px%20solid%20red%3B%0A%20%20%20%20color%3A%20red%3B%0A%20%20%20%20border-radius%3A%203px%3B%0A%20%20%7D%0A%0A%20%20.success%7B%0A%20%20%20%20padding%3A%205px%209px%3B%0A%20%20%20%20border%3A%201px%20solid%20green%3B%0A%20%20%20%20color%3A%20green%3B%0A%20%20%20%20border-radius%3A%203px%3B%0A%20%20%7D%0A%0A%20%20form%20span%7B%0A%20%20%20%20color%3A%20red%3B%0A%20%20%7D%0A%3C%2Fstyle%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="<style>" title="<style>"/> <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>
原谅内联风格!这纯粹是错误/成功消息,并将整个东西放在一个文件中.随意把它放在你的风格.
这里有很多事情.首先,我们回显$响应变量,我们将稍后一下.
其余的只是表单标记,但您将注意到它们的值回应了$ _post变量.这是为了使表单被错误地提交,所有数据都保留,因此用户不必从头开始键入所有内容.
还有一个偷偷摸摸的"隐藏"形式输入,允许我们检查用户是否已发布任何内容.我稍后会到达那个.
我在每个输入旁边添加了一个星号,以表示它们是必需的.
如果保存并刷新,您将有一个漂亮的联系表格!
构建表单逻辑
表单提交后所示的逻辑很简单.有几个需要构建的组件.
- 响应生成和消息(基于验证)
- 验证
- 发送电子邮件
我们将在下面脱落...
响应生成
要保存有杂乱的PHP代码,我们将在表单中放下$响应变量.这很酷,保持逻辑主要与视图分开.我们如何设置这个?
真的很容易,我们需要编写一个函数,其中填充$响应变量与我们从验证中获得的反馈.这必须包含消息以解决每个验证要求.
在get_header()之前的Page-contact-US.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>"; } ?>
这并没有做到这一点,但如果您有基本的PHP知识,那么您将理解我们)创建一个空的$响应变量,b)使用根据其$类型的$邮件填充它,这将是错误或成功.
现在,当我们构建验证时,我们可以在每种情况下调用generate_response()(无论是成功还是失败),传递消息(即电子邮件地址无效),它将在表单上方吐出!
变量进行
有3组,我们需要成功的联系表格.
- 验证消息
- 表单输入变量
- PHP邮件变量
验证过程将使用这些组中的所有三个验证,发送电子邮件并通知用户发送的消息.
下面的my_contact_form_generate_response()函数,写上以下12个变量:
//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";
每个组相当直接.响应消息组在变量中存储所有反馈消息.
用户发布的变量将已放入表单中的内容,并将其放在恰好命名的变量中,以保存一遍又一遍地访问$ _post变量.$ _post包含通过表单提交的所有信息.
最后,我们设置了PHP的 mail()函数所需的几个变量,告诉它是谁转到的,主题行和一些指定和回复的标题-要解决.
验证
这是肉的肉.我们想以最简洁的方式检查所有可能的问题.这需要几个嵌套如果/else 条件陈述,但不足以吹出您的大脑.
按顺序,我们检查
- 如果用户已提交表单(使用隐藏的输入)
- 如果没有,检查人类验证通行证(即用户可以正确地做数学!)
- 如果通过,验证电子邮件地址
- 如果通过,检查是否存在名称和消息(如所需的)
- 如果上述所有通过,请发送电子邮件!
所以让我们陷入困境!
人类验证
真的很简单.我们想测试是否正确地输入了表单用户的数学数学,以确保它们是人类的.如果您回顾我们的表单字段,您将注意到等式是? + 3 = 5 .显然,我们想首先测试如果该值不是2,请吐出错误.如果是2,我们会继续.在可变组下方,粘贴以下内容.
if(!$human == 0){ if($human != 2) my_contact_form_generate_response("error", $not_human);//not human! else { //validate email //validate presence of name and message //send email } } else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);
这里,我们首先检查人类验证是否不等于0.如果是,请检查它是否不正确.如果是,则生成匹配响应.最后一行检查隐藏的字段是否已提交,如果它具有,则抛出另一个错误.
此测试有两个案例:空内容和人类验证.
如果您尝试在空的时候提交表单,则应获得一个很好的错误消息.
很酷!如果您在人类验证中输入以外的任何内容,您也会收到错误.
验证的下一部分是电子邮件验证.现在我们知道他们是人类的,我们希望确保他们提供合法的回复地址,您可以与他们联系.
要非常轻松地执行此操作,我们使用具有许多验证模型的PHP函数.显然,我们将使用filter_validate_email模型来验证电子邮件.
用下面的验证中的三行评论smack bang.
//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 //send email }
此处,如果它是有效的电子邮件地址,我们会过滤$电子邮件变量检查.如果没有,抛出错误.否则,继续!
一行电子邮件验证!
检查是否存在名称和消息相对容易.我们只是使用PHP的空()函数,这取决于您传递给它的变量是否为空.
//validate presence of name and message if(empty($name) || empty($message)){ my_contact_form_generate_response("error", $missing_content); } else//ready to go! { //send email }
最后,我们的最后一块拼图正在发送电子邮件.一旦我们的验证都通过,我们使用 mail()函数php已建立在迅速发送电子邮件.我们还必须生成成功和失败的回复.
替换//发送电子邮件:
$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
相信它与否,你已经完成了!你现在有一个全功能的联系表格.
如果您正确填写所有内容,您应该获得一个快乐的成功消息,称您的电子邮件已被发送.
成功!
要注意的一件事是机器人这些天越过简单的验证码,所以这是一个使用插件的宠物.您可以轻松地将Google Revaptcha融入您的表单中.此外,使用Ajax的方式更好地表单验证和表单提交.
超出规范
的接触形式
您可以看到,您可以在不诉诸您为您完成的规范的情况下建立自己的联系方式.如果有的话,可能最终成为一个有趣的项目来尝试.如果你喜欢结果-保持它!如果没有,就像其他一切,都有插件有替代品.
那是它.滚动自己的联系人页面并不是很难,它可以在没有任何开销的情况下保持尽可能快的东西.根据您的技能,您当然可以构建它.这是学习新事物以及建立您的体验的好方法.更不用说完全了解引擎盖下会发生什么!
额外的信用
如果要进一步取下此操作,请尝试获取表单以将每个条目插入自定义帖子类型帖子.您需要使用orces和wp_insert_post().然后,您甚至可以将其转化为完全用户驱动的推荐引擎!
VPS1352主机测评网(www.vps1352.com)
本文链接:https://www.vps1352.com/11677.html