WordPress在用户中如此受欢迎的原因之一是它为我们提供了一个很棒的用户管理系统,以及创建多作者博客和发布平台的能力. 但是,在某些情况下,有必要扩展默认用户信息, 并在用户配置文件中添加更多字段. 在本教程中 添加元框 转用户配置文件. 有两种方法可以添加用户元数据,让我们分别仔细研究一下.
第一种方法是最简单的,但它有一些局限性. 通过使用此方法,您可以添加联系信息, 比如社交媒体链接, 但您将无法添加任何其他自定义数据. 在大多数情况下, however, 这就足够了, 这就是为什么我们将首先向您展示如何使用它.
user_contactmethods
一个过滤器叫什么 wp_get_user_contact_methods
. 使用此过滤器,我们可以添加所需的社交字段,并在管理面板的用户页面上输出它们. 然后,我们将能够填写每个字段,并保存新的用户信息. 如果您希望使用此过滤器,请将以下代码添加到您的函数中.php file:
这个函数 tm_additional_contact_methods
在每次从数据库中提取用户信息时调用. 这个论点 $fields
是包含所有联系人选项的数组吗. 在我们的函数中,我们使用它来添加三个额外的字段,并返回它以进行进一步处理. 添加过滤器后,您可以在“Contact Info”部分找到新字段.
为了在前端显示保存的数据,使用该功能 get_the_author_meta
,例如,如果您想显示FaceBook个人资料链接,请使用
Get_the_author_meta (' facebook ');
第二种添加用户信息的方法更灵活,但也更复杂. 它包括两个阶段, 首先,我们需要输出自定义字段, 然后将它们的值保存到数据库中.
为了添加我们自己的字段,我们将使用 edit_user_profile
and show_user_profile
hooks, 在用户页面(或您自己的个人资料页面)上输出“更新”按钮之前调用。. 让我们尝试添加一个字段来显示用户的生日. 为了做到这一点,我们需要向函数中添加以下代码.php file:
/**
*在“更新”按钮上方添加新字段.
*
* @param WP_User $user用户对象.
*/
函数功能tm_additional_profile_fields($user) {
$months = array('一月'), 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', “12”);
$default = array( 'day' => 1, 'month' => 'Jnuary', 'year' => 1950, );
$birth_date = wp_parse_args( get_the_author_meta( 'birth_date', $user->ID ), $default );
?>
Extra profile information
让我们详细检查一下这段代码. 首先,我们需要做一些准备工作. 因为所请求数据的范围受到天数和月份的限制, 最好不是简单地添加文本输入字段, 但是选择带有日期和月份列表的框. 这就是为什么让我们创建一个包含可用月份列表的数组.
$months = array('一月'), 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', “12”);
我们也可以得到保存在数据库中的出生日期的值. 以避免错误, 让我们通过使用将数据库中的数组和具有默认值的数组组合起来 wp_parse_args
.
$default = array( 'day' => 1, 'month' => 'January', 'year' => 1950, );
$birth_date = wp_parse_args( get_the_author_meta( 'birth_date', $user->ID ), $default );
下一步是为我们的字段编写HTML代码. 我们将用for和foreach循环填充选择框, 并使用selected函数检查哪些选项保存在数据库中. 我们应该特别注意选择框的name属性, 它们的值按birth_date[day]格式设置. 通过这种方式,我们可以将出生日期存储在单个数组中.
添加这段代码后,我们可以在用户配置页面上看到以下图片:
现在让我们添加一种将字段值保存到数据库中的机制. 为了做到这一点,我们将在函数中添加以下代码段.php:
/**
*保存额外的配置文件字段.
*
@param int $user_id当前用户ID.
*/
函数功能tm_save_profile_fields($user_id) {
if ( ! Current_user_can ('edit_user', $user_id)) {
返回错误;
}
if (empty($_POST['birth_date'])) {
返回错误;
}
update_usermeta($user_id, 'birth_date', $_POST['birth_date']);
}
Add_action ('personal_options_update', 'tm_save_profile_fields');
Add_action ('edit_user_profile_update', 'tm_save_profile_fields');
在这个函数的开头,我们添加了几个安全检查,以避免在将数据保存到数据库时出现错误.
Now by using get_the_author_meta
函数我们可以在前端输出用户的出生日期. 在本例中,此函数返回一个包含day元素的数组, month, 以及用户的出生年份.
最后,我们可以将第一个和第二个例子结合起来,并将它们用作显示有关用户的扩展信息的函数的基础:
function tm_author_bio() {
$socials = array(
'twitter' => array(
'label' => 'Twitter',
'url' => 'http://twitter.com/'
),
'facebook' => array(
'label' => 'Facebook',
'url' => 'http://www.facebook.com/'
),
);
$birth_date = get_the_author_meta( 'birth_date' );
?>
让我们快速浏览一下函数中的代码. 一开始,我们创建了一个包含社交媒体网络数据的数组, 这样我们就可以用它来显示用户的社交链接列表. 可以使用内爆功能显示出生日期, 将数组中的元素转换成字符串, 使用空格作为分隔符. 其余的用户数据可以使用标准的WP功能显示,例如 get_avatar
, the_author_posts_link
, and the_author_meta
.
请随意下载本教程的源代码, 我们决定把它变成一个小插件. 安装并激活插件后, 你可以用下面这行代码显示一个包含额外用户信息的框:
Do_action ('tm_author_bio');
我们希望本教程能够帮助您更深入地理解向WordPress站点添加用户元数据的方法, 并自己实现这些方法.
敬请关注,更多教程即将推出!