当我们安装主题和插件时,都会向…
今天,我为您创建了一个新插件。一个处理用户联系方式的插件。基本上,当您在管理中编辑用户时,会有一个“联系信息”块。好吧,我想向您展示如何在此处添加自己的字段,并进一步介绍如何在注册页面上显示(或不显示)这些新字段。
这是我们将要创建的内容的预览:
为此,和往常一样,我们将创建一个漂亮而简单的插件!
步骤1:建立外挂程式
在wp-content / plugins中创建一个新文件夹,并将其命名为“ custom-user-contact-methods”。在这个新创建的文件夹中,创建一个名为“ rc-custom-user-contact-methods.php”的文件,然后在您喜欢的编辑器软件中将其打开。
将此内容放在您的空文件中。这段代码简单地注册了插件:
<?php
/*
Plugin Name: Custom User Contact Methods
Plugin URL: http://remicorson.com/
Description: Add custom fields to users "contact" section
Version: 1.0
Author: Remi Corson
Author URI: http://remicorson.com
Contributors: corsonr
*/
步骤2:定义您的自定义字段
接下来,我们需要创建一个变量,其中将包含我们的自定义字段,这些字段将在用户版本页面以及注册默认页面中使用。让我们将这些字段存储到一个名为$ extra_fields的变量中。
$extra_fields = array( array( 'facebook', __( 'Facebook Username', 'rc_cucm' ), true ), array( 'twitter', __( 'Twitter Username', 'rc_cucm' ), true ), array( 'googleplus', __( 'Google+ ID', 'rc_cucm' ), true ), array( 'linkedin', __( 'Linked In ID', 'rc_cucm' ), false ), array( 'pinterest', __( 'Pinterest Username', 'rc_cucm' ), false ), array( 'wordpress', __( 'WordPress.org Username', 'rc_cucm' ), false ), array( 'phone', __( 'Phone Number', 'rc_cucm' ), true ) );
我们正在存储具有3个参数的数组中的每个字段,第一个是字段ID,第二个是字段标签,最后一个是布尔信息,该信息定义该字段是否显示在注册页面上。您可以根据需要添加任意数量的参数,例如占位符或必需的信息。
步骤3:勾上正确的过滤器
现在,我们需要将函数连接到正确的过滤器。在我们的特定情况下,过滤器为“ user_contactmethods”,而我们要创建的函数的名称为“ rc_add_user_contactmethods”。
// Use the user_contactmethods to add new fields
add_filter( 'user_contactmethods', 'rc_add_user_contactmethods' );
步骤4:创建我们的自定义字段
现在,我们需要创建“ rc_add_user_contactmethods”函数。这是将我们的自定义字段添加到用户编辑页面的方法。好消息是,我们将字段存储在数组中,这意味着以下函数将是完全动态的,并且只需修改$ extra_fields变量即可轻松添加新字段。
/** * Add custom users custom contact methods * * @access public * @since 1.0 * @return void */ function rc_add_user_contactmethods( $user_contactmethods ) { // Get fields global $extra_fields; // Display each fields foreach( $extra_fields as $field ) { if ( !isset( $contactmethods[ $field[0] ] ) ) $user_contactmethods[ $field[0] ] = $field[1]; } // Returns the contact methods return $user_contactmethods; }
在此步骤中,如果您保存并激活了插件,则应该在用户编辑页面中看到您的自定义字段。当我们使用正确的钩子时,我们不必创建“保存”字段数据。因此,该插件目前运行良好。但我想进一步介绍并添加选项以在注册页面上显示这些字段。确保在设置下选中“任何人都可以注册”复选框,否则您将看不到“注册”链接。
步骤5:注册页面挂钩
要在注册页面上添加字段,我们需要访问至少两个钩子,并创建两个函数。一个显示字段,第二个将字段数据保存到数据库中。
让我们挂钩我们的功能:
// Add our fields to the registration process
add_action( 'register_form', 'rc_register_form_display_extra_fields' );
add_action( 'user_register', 'rc_user_register_save_extra_fields', 100 );
步骤6:显示自定义字段注册页面
在上面的代码中,我们声明了两个函数。第一个是在注册页面上显示字段。在这一部分中,我们需要注意$ extra_fields中每个数组的第三个参数。此布尔值参数指示是否必须显示字段。True:显示该字段,False:未显示该字段。
/** * Show custom fields on registration page * * Show custom fields on registration if field third parameter is set to true * * @access public * @since 1.0 * @return void */ function rc_register_form_display_extra_fields() { // Get fields global $extra_fields; // Display each field if 3th parameter set to "true" foreach( $extra_fields as $field ) { if ( $field[2] == true ) { $field_value = isset( $_POST[ $field[0] ] ) ? $_POST[ $field[0] ] : ''; echo '<p> <label for="'. esc_attr( $field[0] ) .'">'. esc_html( $field[1] ) .'<br /> <input type="text" name="'. esc_attr( $field[0] ) .'" id="'. esc_attr( $field[0] ) .'" class="input" value="'. esc_attr( $field_value ) .'" size="20" /></label> </label> </p>'; } // endif } // end foreach }
步骤7:在注册过程中存储字段值
现在,我们的字段已显示在注册页面上,我们需要将其值存储到数据库中。这是“ rc_user_register_save_extra_fields”功能的动画。为此,我们需要使用“ wp_update_user() ”函数。
/** * Save field values * * @access public * @since 1.0 * @return void */ function rc_user_register_save_extra_fields( $user_id, $password = '', $meta = array() ) { // Get fields global $extra_fields; $userdata = array(); $userdata['ID'] = $user_id; // Save each field foreach( $extra_fields as $field ) { if( $field[2] == true ) { $userdata[ $field[0] ] = $_POST[ $field[0] ]; } // endif } // end foreach $new_user_id = wp_update_user( $userdata ); }
结论
好了,我们了解了如何向用户联系方法添加新字段的基础知识,仅此而已。例如,您可以通过简单的unset()删除现有字段,例如“ Yahoo IM”,“ AIM”和“ Jabber”。但是您也可以添加一些功能来清理您的自定义字段,以便检查例如电话号码是否具有适当的格式,是否需要字段等,等等……请随时询问注释中的特定功能!
哦,最后一件事……如果要显示任何字段的数据,只需使用以下命令:
// Param 1 is user ID // Param 2 is field ID // Param 3 is there to get a var or an array echo get_user_meta( 1, 'twitter', true );
微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!
需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!