Wordpress

如何把“注册日期”添加到WordPress后台的用户列表中(代码实现)

当我们使用wordpress后台管理我们的注册用户时,有时候我们很想看到用户的注册日期,并希望能够通过用户的注册日期对用户进行排序,特别是当注册用户比较多的时候,这个需求就会变得更加重要。然而wordpress的用户列表当中,却并没有显示注册日期。

要实现这个目标并不复杂,我们只需要添加几行简单的代码就可以了。

首先我们打开菜单:外观->主题文件编辑器 (Appearance->Theme File Editor),在右上角选择你正在使用的子主题(Child Theme),在主题文件中找到function.php并点击打开它。注:如果你没有创建子主题(Child Theme),不建议在父主题(Parent theme)中直接修改function.php文件,因为后续主题的版本更新会覆盖掉你修改的内容。【查看我的另一个文章,了解如何创建子主题】

然后在function.php这个文件的下方,依次添加如下三部分代码。

第一段代码:用于在用户列表中增加一个新的”注册日期“列。把代码中的your-domain-name替换成你的主题所使用的textdomain名称,使得此列可翻译。

/*
 * 在用户列表中添加一列
 */
add_filter( 'manage_users_columns', 'kevindree_add_column_to_user_table' );
function kevindree_add_column_to_user_table( $columns ) {
	$columns[ 'registration_date' ] = __('Registration date', 'your-domain-name');  // add new column, can be translated.
	return $columns;
}

第二段代码:获取用户的注册日期的值,并把他输出在对应的列上。其中的日期格式可以根据你的习惯进行调整。

/*
 * 获取用户的注册日期,按照设定的日期格式返回给列输出
 */
add_filter( 'manage_users_custom_column', 'kevindree_output_user_table_row', 10, 3 );
function kevindree_output_user_table_row( $row_output, $column_id_attr, $user ) {
	
	$date_format = 'Y M j H:i';
	if ($column_id_attr == 'registration_date') {
		$row_output = date( $date_format, strtotime( get_the_author_meta( 'registered', $user ) ) );
	}
	return $row_output;
}

第三段代码:把”注册日期“这个列改为可排序列。wordpress后台列表的列,有的可以排序,有的不能排序,为了方便使用,我们把”注册日期“设为可排序。

/*
 * 把“注册日期”列设为可排序
 */
add_filter( 'manage_users_sortable_columns', 'kevindree_make_registration_date_sortable' );
function kevindree_make_registration_date_sortable( $columns ) {
	return wp_parse_args( array( 'registration_date' => 'registered' ), $columns );
}

完成上述代码的添加后,一个新增的、可排序的”注册日期“列就可以正常的显示在用户列表了。

在其他列表中添加列的方式与此类似,差别在于所使用的filter不同,具体情况可以在wordpress开发说明文档中查看。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注