17713433920 info@mac163.com
创建您自己的WordPress用户联系字段
创建您自己的WordPress用户联系字段

今天,我为您创建了一个新插件。一个处理用户联系方式的插件。基本上,当您在管理中编辑用户时,会有一个“联系信息”块。好吧,我想向您展示如何在此处添加自己的字段,并进一步介绍如何在注册页面上显示(或不显示)这些新字段。

这是我们将要创建的内容的预览:

编辑自定义字段
编辑自定义字段

编辑页面上的新用户字段

自定义字段
自定义字段

注册页面上的自定义字段

为此,和往常一样,我们将创建一个漂亮而简单的插件!

步骤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开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部