注册用户是任何 WordPress 网站成功的重要因素。无论是简单的博客还是电子商务商店,注册用户都是接收您的消息并帮助您扩大品牌影响力的受众。
多年来,标准 WordPress 注册表被认为足以满足普通 WordPress 管理员的需求。这就是为什么这种形式成为 WordPress 核心的重要组成部分。
然而,WordPress 已经不仅仅是一个简单的博客平台了。现在它占据了整个互联网近 30% 的份额。因此,几年前有效的方法可能不适合当前用户的要求。
满足 WordPress 注册表相关要求的解决方案很简单:WordPress 自定义注册表。
为什么选择 WordPress 自定义注册表单
与标准表单相比,自定义 WordPress 注册表有两大优势。
首先是与网站主题的整体外观和感觉的整合。标准表单通常不能很好地与自定义主题配合使用,并且自定义 CSS 文件始终有可能无法与表单一起很好地呈现。另一方面,可以轻松设置自定义表单以使用自定义 CSS。
使用自定义注册表单的第二个也是更常见的原因是可以选择标准表单中未包含的自定义字段。一个小的自定义注册表可以加快流程并从简洁的界面收集所有必要的数据。
自定义注册表单不仅限于 WordPress 博客。如果您有 WooCommerce 商店,自定义 WooCommerce 注册表单是收集标准表单遗漏的特定用户信息项目的好方法。
让我们首先创建一个 WordPress 自定义注册插件,然后您可以将其用作“您自己的注册表单的样板”
WordPress 自定义注册表单插件
首先在插件文件夹中创建一个文件夹。将这个新文件夹命名为 WordPress Registration Form。
在此文件夹中创建一个新的 .php 文件并将其命名为 custom-registration.php。首先在此文件中添加以下行:
12345678 < ? php /*插件名称:WordPress 注册表单描述:使用短代码和脚本的自定义注册表单 版本:1.x作者:Muhammad Owais Alam */
由于这是一个自定义插件,因此上述信息将在 WordPress 插件页面中反映为:
注册表单 HTML 的功能
以下函数包含表单的 HTML 代码。
123456789101112131415161718功能 wordpress_custom_registration_form ( $名字, $姓氏, $用户名, $密码, $电子邮件) { 全球的 $用户名, $密码, $电子邮件, $名字, $姓氏; 回声 ' <表单动作='' 。 $ _SERVER [ 'REQUEST_URI' ] 。 '" method="post">名字: <input type="text" name="fname" value="' 。 ( 伊塞特( $ _POST [ 'fname' ] ) ? $名字 : 无效的 ) 。 '">姓氏: <input type="text" name="lname" value="' 。 ( 伊塞特( $ _POST [ 'lname' ] ) ? $姓氏 : 无效的 ) 。 '">用户名 <strong>*</strong> <input type="text" name="username" value="' 。 ( 伊塞特( $ _POST [ '用户名' ] ) ? $用户名 : 无效的 ) 。 '">密码<strong>*</strong> <input type="password" name="password" value="' 。 ( 伊塞特( $ _POST [ '密码' ] ) ? $密码 : 无效的 ) 。 '">电子邮件:<strong>*</strong> <input type="text" name="email" value="' 。 ( 伊塞特( $ _POST [ '电子邮件' ] ) ? $电子邮件 : 无效的 ) 。 '"> <input type="submit" name="submit" value="Register"/> </form> ' ; }
正如您所看到的,这个函数有一个非常基本的设计,仅涵盖基本问题。您可以按原样使用此功能,也可以通过添加 HTML 元素来添加所需的字段。
就目前而言,当插件被激活时,访问者将看到以下内容:
WordPress 表单注册验证
使用任何形式而不验证用户数据肯定会导致灾难。事实上,最好的情况就是用户数据不准确。在最坏的情况下,您会邀请互联网上的每个令人讨厌的角色来攻击您的安全。
考虑到这一点,验证是自定义 WordPress 用户注册表单插件的重要组成部分。它是由函数wp_reg_form_valid实现的,代码如下:
123456789101112131415功能 wp_reg_form_valid ( $用户名, $密码, $电子邮件) { 全球的 $ customize_error_validation ; $自定义错误验证 = 新的 WP_错误; 如果 ( 空的( $用户名 ) | | 空的( $密码 ) | | 空的( $电子邮件 ) ) { $ customize_error_validation- > add ( '字段' , '请填写 WordPress 注册表字段' ) ; } 如果 ( 用户名_存在( $用户名 ) ) $ customize_error_validation- > add ( '用户名' , '用户已存在' ) ; 如果 ( is_wp_错误( $自定义错误验证 ) ) { foreach ( $ customize_error_validation- > get_error_messages ( ) 作为 $错误 ) { 回声 '<strong>按住</strong>:' ; 回声 $错误 。 '<br/>' ; } } }
上面的代码片段使用 WP_Error 类来简化验证过程。
请注意,全局 $customize_error_validation确保 WP_Error 的实例成为全局的并且可以在验证函数的范围之外访问。
验证过程的第一步是检查三个重要字段用户名、电子邮件和密码是否不为空。这是通过if (empty($username) ||empty($password)||empty($email))检查来完成的,该检查向用户指示这些是必填字段。接下来, username_exists( $username )验证用户名是否唯一。如果出现任何问题,用户将看到 HOLD 错误消息(您可以自定义它以满足您的要求)。
该表单还可以使用基于 JavaScript 的验证。正如您在代码片段中看到的,表单操作标记还可以支持在onsubmit 操作上触发的 JavaScript 标记。为此,将表单操作标记修改为:
1 <表单操作= "' . $_SERVER['REQUEST_URI'] . '" 姓名 = “wp-自定义注册” 提交 = “返回(验证());” >
实际的验证是通过以下validate()函数执行的:
12345678910111213 <脚本类型 = “文本/javascript” > 功能 证实( ) { 如果( 文档。 wp-自定义–注册。名称。价值 == ”” ) { 警报( “输入您的名字” ) ; 返回 错误的; } 如果( 文档。 wp-自定义–注册。我的名字。价值 == ”” ) { 警报( “输入您的姓氏” ) ; 返回 错误的; } 返回( 真的 ) ; } </脚本>
在validate()函数中, wp-custom-registration是表单名称, fname.value是字段名称和值对象的组合。
以下函数确保表单的所有字段均已填写。接下来,它使用wp_insert() 函数将表单中的数据添加到数据库中。
123456789101112131415功能 wordpress_user_registration_form_completion ( ) { 全球的 $ customize_error_validation , $用户名, $密码, $电子邮件, $名字, $姓氏; 如果 ( 一 > 数数( $ customize_error_validation- > get_error_messages ( ) ) ) { $用户数据 = 大批( '名' = > $名字, '姓' = > $姓氏, '用户登录' = > $用户名, '用户电子邮件' = > $电子邮件, '用户密码' = > $密码, ) ; $用户 = wp_插入_用户( $用户数据 ) ; 回声 ‘完成 WordPress 注册。转到 <a href="' 。 获取网站网址( ) 。 '/wp-login.php">登录页面</a>。' ; } }
简码注册
可以使用短代码[wp_registration_form]将此表单插入到任何位置。这是设置短代码的代码片段:
1234567 add_shortcode ( 'wp_registration_form' , 'wp_custom_shortcode_registration' ) ; 功能 wp_custom_shortcode_registration ( ) { ob_start ( ) ; wordpress_custom_registration_form_function ( ) ; 返回 ob_get_clean ( ) ; }
如果您希望将表单集成到主题中,只需添加以下模板标签:
1 <?php wordpress_custom_registration_form_function ( ) ; ?>
插件的完整代码
这是完整的代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 < ? php /*插件名称:WordPress 注册表单描述:使用短代码和脚本的自定义注册表单 版本:1.x作者:Muhammad Owais Alam */ function wordpress_custom_registration_form ( $名字, $姓氏, $用户名, $密码, $电子邮件) { 全球的 $用户名, $密码, $电子邮件, $名字, $姓氏; 回声 ' <表单动作='' 。 $ _SERVER [ 'REQUEST_URI' ] 。 '" method="post">名字: <input type="text" name="fname" value="' 。 ( 伊塞特( $ _POST [ 'fname' ] ) ? $名字 : 无效的 ) 。 '">姓氏: <input type="text" name="lname" value="' 。 ( 伊塞特( $ _POST [ 'lname' ] ) ? $姓氏 : 无效的 ) 。 '">用户名 <strong>*</strong> <input type="text" name="username" value="' 。 ( 伊塞特( $ _POST [ '用户名' ] ) ? $用户名 : 无效的 ) 。 '">密码<strong>*</strong> <input type="password" name="password" value="' 。 ( 伊塞特( $ _POST [ '密码' ] ) ? $密码 : 无效的 ) 。 '">电子邮件:<strong>*</strong> <input type="text" name="email" value="' 。 ( 伊塞特( $ _POST [ '电子邮件' ] ) ? $电子邮件 : 无效的 ) 。 '"> <input type="submit" name="submit" value="Register"/> </form> ' ; }函数 wp_reg_form_valid ( $用户名, $密码, $电子邮件) { 全球的 $ customize_error_validation ; $自定义错误验证 = 新的 WP_错误; 如果 ( 空的( $用户名 ) | | 空的( $密码 ) | | 空的( $电子邮件 ) ) { $ customize_error_validation- > add ( '字段' , '请填写WordPress注册表' ) ; } 如果 ( 用户名_存在( $用户名 ) ) $ customize_error_validation- > add ( '用户名' , '用户已存在' ) ; 如果 ( is_wp_错误( $自定义错误验证 ) ) { foreach ( $ customize_error_validation- > get_error_messages ( ) 作为 $错误 ) { 回声 '<strong>按住</strong>:' ; 回声 $错误 。 '<br/>' ; } } } 功能 wordpress_user_registration_form_completion ( ) { 全球的 $ customize_error_validation , $用户名, $密码, $电子邮件, $名字, $姓氏; 如果 ( 一 > 数数( $ customize_error_validation- > get_error_messages ( ) ) ) { $用户数据 = 大批( '名' = > $名字, '姓' = > $姓氏, '用户登录' = > $用户名, '用户电子邮件' = > $电子邮件, '用户密码' = > $密码, ) ; $用户 = wp_插入_用户( $用户数据 ) ; 回声 ‘完成 WordPress 注册。转到 <a href="' 。 获取网站网址( ) 。 '/wp-login.php">登录页面</a>。' ; } }功能 wordpress_custom_registration_form_function ( ) { 全球的 $名字, $姓氏, $用户名, $密码, $电子邮件 ; 如果 ( isset ( $ _POST [ '提交' ] ) ) { wp_reg_form_valid ( $ _POST [ '用户名' ] , $ _POST [ '密码' ] , $ _POST [ '电子邮件' ] , $ _POST [ 'fname' ] , $ _POST [ 'lname' ] ) ; $用户名 = 清理用户( $ _POST [ '用户名' ] ) ; $密码 = esc_属性( $ _POST [ '密码' ] ) ; $电子邮件 = 清理电子邮件( $ _POST [ '电子邮件' ] ) ; $名字 = 清理文本字段( $ _POST [ 'fname' ] ) ; $姓氏 = 清理文本字段( $ _POST [ 'lname' ] ) ; wordpress_user_registration_form_completion ( $用户名, $密码, $电子邮件, $名字, $姓氏 ) ; } wordpress_custom_registration_form ( $用户名, $密码, $电子邮件, $名字, $姓氏 ) ; } 添加短代码( 'wp_registration_form' , 'wp_custom_shortcode_registration' ) ; 功能 wp_custom_shortcode_registration ( ) { ob_start ( ) ; wordpress_custom_registration_form_function ( ) ; 返回 ob_get_clean ( ) ; }自定义验证字段方法add_filter ( '注册错误' , 'custom_validation_error_method' , 10 , 2 ) ;功能 自定义验证错误方法( $错误, $ lname , $姓氏 ) { 如果 ( 空的( $ _POST [ 'fname' ] ) | | ( ! 空的( $ _POST [ 'fname' ] ) && trim( $_POST['fname'] ) == '' ) ) { $errors->add( 'fname_error', __( '<strong>错误</strong>:输入你的名字。' ) ); } 如果 ( 空的( $ _POST [ 'lname' ] ) | | ( ! 空的( $ _POST [ 'lname' ] ) && trim( $_POST['lname'] ) == '' ) ) { $errors->add( 'lname_error', __( '<strong>错误</strong>:输入您的姓氏。' ) ); } 返回 $错误; }
包起来
我希望现在您对创建 WordPress 自定义注册表单插件有一个清晰的想法。我提供了一个基本模板,您可以扩展和/或修改它以满足您的要求。如果您需要澄清一点,请在下面发表评论,我会回复您。
RSS