扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
WordPress默认的注册表单仅由两个字段组成—-用户名和邮箱。
成都创新互联公司,为您提供成都网站建设、成都网站制作、网站营销推广、网站开发设计,对服务航空箱等多个行业拥有丰富的网站建设及推广经验。成都创新互联公司网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
这个仅有的用户名和邮箱表单字段使得注册速度非常的简单。首先,你输入一个用户名,然后输入邮箱,这个邮箱就是用来接收密码的。接下来,你使用邮箱接收到的密码登陆站点,并且完成个人资料,把密码修改成简单易记得。
仅仅是在站点注册,而不是让用户区经历这些压力,那为什么除了用户名和邮箱之外,不提供一个直接的、包含一些额外重要的表单字段,例如密码、个人的URL、个人简介、昵称和他们的姓名的注册表单供用户使用呢?
这对于像Tuts+的多用户网站是非常有用的。
在这篇文章中,我们将使用下列的表单字段建立一个自定义的表单注册插件:
username
password
website URL
first name
last name
nickname
biography (or an about section)
这个自定义表单插件可以通过使用短代码和联系模板整合到WordPress中。
利用短代码模板,你可以在你的站点中创建一个正式的注册页面。你也可以再一篇发表的文章中是用短代码模板,这样用户就可以在阅读完你的文章之后进行注册。
如果你想添加一个注册表单在你网站侧边栏的某个具体位置,你可以对WordPress主题中仅仅期望放置标签模板的位置进行编辑,来创建需要的注册表单。
在创建之前,需要注意的是,用户名、密码和电子邮件字段是必需的。
当我们编写验证函数时,我们将强制执行这些规则。
构建插件
正如说的那样,我们开始对插件编码。首先,包含插件的头部:
?php
/*
Plugin Name: Custom Registration
Plugin URI:
Description: Updates user rating based on number of posts.
Version: 1.0
Author: Agbonghama Collins
Author URI:
*/
接下来,我们创建一个包含注册表单的HTML代码的PHP函数:
function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
echo '
style
div {
margin-bottom:2px;
}
input{
margin-bottom:4px;
}
/style
';
echo '
form action="' . $_SERVER['REQUEST_URI'] . '" method="post"
div
label for="username"Username strong*/strong/label
input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '"
/div
div
label for="password"Password strong*/strong/label
input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '"
/div
div
label for="email"Email strong*/strong/label
input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '"
/div
div
label for="website"Website/label
input type="text" name="website" value="' . ( isset( $_POST['website']) ? $website : null ) . '"
/div
div
label for="firstname"First Name/label
input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '"
/div
div
label for="website"Last Name/label
input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '"
/div
div
label for="nickname"Nickname/label
input type="text" name="nickname" value="' . ( isset( $_POST['nickname']) ? $nickname : null ) . '"
/div
div
label for="bio"About / Bio/label
textarea name="bio"' . ( isset( $_POST['bio']) ? $bio : null ) . '/textarea
/div
input type="submit" name="submit" value="Register"/
/form
';
}
请注意注册字段是作为变量传递给上面的函数。在函数中,你会看到下面代码的示例:
( isset( $_POST['lname'] ) ? $last_name : null )
这个三元操作符是检查全局变量数组$_POST是否包含数据,如果有数据,就把填充的表单字段值保存以便进入下一个字段。
除非你验证了表单数据并且清空了表单数据,一个注册表单才能算完成,否则就不算。因此,我们要创建一个名为 registration_validation的表单验证函数。
为了简化验证的”痛苦”,我们可以使用WordPress中的 WP_Error 类。跟着我编写验证函数:
1、创建函数,并将注册表单的字段值作为函数的参数传递进来
function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
2、实例化 WP_Error 类,并把实例作为全局变量,以便于我们可以再函数的作用域之外使用。
global $reg_errors;
$reg_errors = new WP_Error;
3、记住:我们说的用户名、密码和电子邮件是必填的,不要忽略了。为了执行这个规则,我们需要检查它们中任何一个是否为空。如果为空,我们就将错误信息追加给 WP_Error 类的实例。
if ( empty( $username ) || empty( $password ) || empty( $email ) ) {
$reg_errors-add('field', 'Required form field is missing');
}
4、我们也可以确保用户名的字符个数不小于4
if ( 4 strlen( $username ) ) {
$reg_errors-add( 'username_length', 'Username too short. At least 4 characters is required' );
}
5、检查用户名是否被注册了
if ( username_exists( $username ) )
$reg_errors-add('user_name', 'Sorry, that username already exists!');
6、利用WordPress的 validate_username 函数确保用户名是可用的
if ( ! validate_username( $username ) ) {
$reg_errors-add( 'username_invalid', 'Sorry, the username you entered is not valid' );
}
7、确保用户输入的密码的字符个数不小于5
if ( 5 strlen( $password ) ) {
$reg_errors-add( 'password', 'Password length must be greater than 5' );
}
8、检查电子邮件是否有效
if ( !is_email( $email ) ) {
$reg_errors-add( 'email_invalid', 'Email is not valid' );
}
9、检查电子邮件是否被注册
if ( !is_email( $email ) ) {
$reg_errors-add( 'email_invalid', 'Email is not valid' );
}
10.、如果用户填写了网站字段,需要检查其是否有效
if ( ! empty( $website ) ) {
if ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
$reg_errors-add( 'website', 'Website is not a valid URL' );
}
}
11、最后,我们在WP_Error实例中对错误进行循环,并显示个别的错误
if ( is_wp_error( $reg_errors ) ) {
foreach ( $reg_errors-get_error_messages() as $error ) {
echo 'div';
echo 'strongERROR/strong:';
echo $error . 'br/';
echo '/div';
}
}
这样,验证函数就完成了。接下来是 complete_registration()函数,用于处理用户注册。用户的注册真正完成是通过wp_insert_user函数,
用户的数据作为数据保存后可以作为此函数的参数。
function complete_registration() {
global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
if ( 1 count( $reg_errors-get_error_messages() ) ) {
$userdata = array(
'user_login' = $username,
'user_email' = $email,
'user_pass' = $password,
'user_url' = $website,
'first_name' = $first_name,
'last_name' = $last_name,
'nickname' = $nickname,
'description' = $bio,
);
$user = wp_insert_user( $userdata );
echo 'Registration complete. Goto a href="' . get_site_url() . '/wp-login.php"login page/a.';
}
}
在上面的函数中,我们将$reg_errors作为WP_Error的实例,并将表单字段作为全局变量以便于可以再全局作用域中使用。
我们需要检查$reg_errors是否包含任何错误,如果没有错误,则将用户注册信息插入到WordPress的数据库并用登陆链接来显示注册完成的信息。
然后,把所有我们之前创建的函数全部放在全局函数 custom_registration_function()之中
function custom_registration_function() {
if ( isset($_POST['submit'] ) ) {
registration_validation(
$_POST['username'],
$_POST['password'],
$_POST['email'],
$_POST['website'],
$_POST['fname'],
$_POST['lname'],
$_POST['nickname'],
$_POST['bio']
);
// sanitize user form input
global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
$username = sanitize_user( $_POST['username'] );
$password = esc_attr( $_POST['password'] );
$email = sanitize_email( $_POST['email'] );
$website = esc_url( $_POST['website'] );
$first_name = sanitize_text_field( $_POST['fname'] );
$last_name = sanitize_text_field( $_POST['lname'] );
$nickname = sanitize_text_field( $_POST['nickname'] );
$bio = esc_textarea( $_POST['bio'] );
// call @function complete_registration to create the user
// only when no WP_error is found
complete_registration(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
registration_form(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
我需要说明一下全局函数 custom_registration_function()中有哪些代码。
首先,我通过检查$_POST['submit']是否是空来确定表单是否提交。如果提交了,我就调用
registration_validation()函数来验证用户提交的表单.
然后,确保表单数据的有效性并将有效的数据在表单字段域之后用一个变量命名。最后,调用
complete_registration()函数保存用户。我需要调用registration_form()函数来显示用户注册表单。
我之前提到过,我打算用短代码模板来支持注册插件。下面就是短代码模的支持代码:
// Register a new shortcode: [cr_custom_registration]
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
// The callback function that will replace [book]
function custom_registration_shortcode() {
ob_start();
custom_registration_function();
return ob_get_clean();
}
到这里为止,我们已经完成了插件
大家在wordpress建立初期,会碰到建立新用户前台注册登录的问题,是通过发送密码的形式,来成功注册登录。
今天为大家介绍利用SMTP进行发邮件。wordpress邮箱配置。
安装使用wordpress的SMTP插件完成配置
此方法我已经在用,完全有效。首先在wp后台选择“添加插件”然后搜索“SMTP”,其搜索结果第一个就是wordp的SMTP插件,然后点击安装,即可再无忧的php空间中完成在线安装此插件。将SMTP插件启用后,再设置中会多出一个“SMTP设置”选项,我们进入后将SMTP邮件信息设置好就可以正常使用了。如下图:
只要按着上面的方法就可以完成wordpress的前台注册发送密码并登录网站。
一些常用的wordpress插件:
1、Akismet
Akismet 是 WordPress 官方推荐的一款 WordPress 防垃圾评论插件,也是默认已安装的插件。
2、WP-Postviews
最好且最流行的WordPress浏览次数统计插件莫过于WP-Postviews,该插件可以统计每篇文章的浏览次数,并且可以获取最受欢迎(浏览次数最多)的文章列表。
3、WP No Category Base
默认情况下,WordPress分类目录的链接自动添加了 /category/ 标志,如果你希望去掉它, WP No Category Base 是个不错的选择!
4、Google XML Sitemaps
Google XML Sitemaps 是一个使用非常广泛的XML网站地图插件,通过它,你可以很轻松为你的 WordPress 博客生成 Sitemap,方便搜索引擎抓取你博客的文章。
5、Baidu Sitemap Generator
通过它可以生成百度 Sitemap XML 文件。
6、DB Cache Reloaded Fix + Hyper Cache
DB Cache Reloaded Fix是一个出色的WordPress数据库缓存插件,可以大大减少对数据库的请求次数。
Hyper Cache 是非常小巧但很强大的WordPress缓存插件,设置简单,完美支持Gzip压缩,可缓存404页,重定向页面等。
推荐将这两个插件一起搭配使用,效果很不错。
7、WP Super Cache
WP Super Cache 是使用的比较多的缓存插件,功能也比较齐全。安装 WP Super Cache 插件并启用Gzip选项。它可以为访问者只加载那些合适的缓存内容,而不是加载你的WordPress站点中的每一个脚本和元素。可以很大降低带宽占用,避免网站在流量高峰时崩溃。
8、SEO Friendly Images
SEO Friendly Images 可以批量给你文章中的图片添加 alt 和 title 信息,提高SEO效果。
9、WP Keyword Link
WP Keyword Link 是一款 WordPress SEO插件,原来是老外的插件,不支持中文,后来 柳城 在作者同意下,修改使之支持中文关键词。通过简单设置,可以为你的wordpress博客添加关键词的链接,给文章加上内部链接有利于增加搜索引擎收录,该插件完美支持中英文关键词。
10、WP-DB-Backup
WordPress Database Backup 是一款专门备份数据库的插件,支持手动备份和自动定时备份,可以备份保存在主机空间,下载到本地或者发送到指定邮箱。
11、BackWPup
BackWPup 是一款超级强大的WordPress备份插件,支持全自动的定时备份,支持备份到FTP空间、邮箱、Dropbox、Amazon S3 ,可以备份数据库、网站的任何文件。
12、Simple URLs
Simple URLs是一个简单实用的WordPress外链转内链短网址插件,调用了wordpress本身的发布功能,添加个链接,就向发布文章一样简单,还支持统计链接点击次数哦。做淘宝客或联盟推荐的不妨试试。
13、Redirection
Redirection 是一款功能非常强大的WordPress 301重定向插件,对于更换域名或者修改网站安装目录,修改分类目录等,都可以很方便地进行正确转向。Redirection 本身就包含中文语言包,使用起来应该还是比较方便的。
14、CubePoints
CubePoints 是目前免费的最强大的 WordPress会员积分插件,这个插件有很多集成的模块,支持设置设定积分前后缀,设定设置积分增长规则,设置收费内容,积分互转,积分排行版等等。对于开放注册的站点来说,该插件是个提高用户积极性的良好工具!
15、Contact Form 7
Contact Form 7 是一款简单易用扩展性灵活的WordPress联系表单插件,可以自定义各式各样不同类型的表单功能,而且支持自定义接收邮件,Ajax提交和 jQuery表单插件支持。可结合Akismet过滤垃圾邮件,同时也支持CAPTCHA反垃圾邮件,表单域元素支持各种最常见的:单选框、复选框、文本框、下拉菜单、按钮、文件上传等多种表单域。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流