WP_用户_列表_表{}

用于实现在列表中显示用户的核心类。

描述

另请参阅

方法

姓名描述
WP_Users_List_Table::__construct建造师。
WP_Users_List_Table::ajax_user_can检查当前用户的权限。
WP_用户列表表::当前操作捕获所需的批量操作并将其返回。
WP_Users_List_Table::显示行生成列表表行。
WP_用户列表表::额外表导航输出控件以允许批量更改用户角色。
WP_用户列表表::get_bulk_actions检索此表上可用的批量操作的关联数组。
WP_Users_List_Table::获取列获取列表表的列列表。
WP_Users_List_Table::get_default_primary_column_name获取默认主列的名称。
WP_Users_List_Table::获取角色列表返回给定用户对象的已转换用户角色名称数组。
WP_Users_List_Table::get_sortable_columns获取列表表的可排序列的列表。
WP_Users_List_Table::获取视图返回一个关联数组,其中列出了可用于此表的所有视图。
WP_Users_List_Table::无项目输出“无用户”消息。
WP_Users_List_Table::准备项准备要显示的用户列表。
WP_Users_List_Table::single_row在users.php管理面板上为单行生成HTML。

来源

类WP_Users_List_Table扩展了WP_List_Tab{/***要为其生成用户列表表的站点ID。**@自3.1.0起*@var整数*/公共$site_id;/***当前用户列表表是否用于Multisite。**@自3.1.0起*@var布尔*/公共$is_site_users;/***建造师。**@自3.1.0起**@有关默认参数的更多信息,请参阅WP_List_Table::__construct()。**@param array$args参数的关联数组。*/公共函数__construct($args=array()){父级::__construct(阵列(“单数”=>“用户”,“复数”=>“用户”,“screen”=>设置($args['screen'])$args['screen']:空,));$this->is_site_users='site-users-network'===$this->屏幕->id;if($this->issiteusers){$this->site_id=isset($_REQUEST['id'])?(int)$_REQUEST['id']:0;}}/***检查当前用户的权限。**@自3.1.0起**@return布尔*/公共函数ajax_user_can(){if($this->issiteusers){return current_user_can('管理站点');}其他{return current_user_can('list_users');}}/***准备要显示的用户列表。**@自3.1.0起**@global字符串$role*@global字符串$usersearch*/公共函数prepare_items(){全局$role,$usersearch;$usersearch=isset($_REQUEST[s'])?wp_unslash(修剪($_REQUEST[s']):'';$role=isset($_REQUEST['role'])$_请求['role']:'';$per_page=($this->is_site_users)?'site_users_network_per_page':'用户_per_page';$users_per_page=$this->get_items_per_page($per_page);$paged=$this->get_pagenum();if('none'===$role){$args=阵列(“数字”=>$users_per_page,“偏移量”=>($paged-1)*$users_per_page,“include”=>wp_get_users_with_no_role($this->site_id),“搜索”=>$usersearch,“字段”=>“all_with_meta”,);}其他{$args=阵列(“数字”=>$users_per_page,“偏移量”=>($paged-1)*$users_per_page,“角色”=>$role,“搜索”=>$usersearch,“字段”=>“all_with_meta”,);}if(''!==$args['search']){$args['search']='*'$args['search'].'*';}如果($this->is_site_users){$args['blog_id']=$this->site_id;}if(isset($_REQUEST['orderby'])){$args['orderby']=$_REQUEST['orderpy'];}if(isset($_REQUEST['订单']){$args['order']=$_REQUEST['order'];}/***筛选用于检索当前用户列表表的用户的查询参数。**@自4.4.0起**@param array$args传递给WP_User_Query的参数用于检索当前*用户列表表。*/$args=应用筛选器('users_list_table_query_args',$args);//查询此页面的用户ID。$wp_user_search=新的wp_user_Query($args);$this->items=$wp_user_search->get_results();$this->set_pagination_args(阵列('total_items'=>$wp_user_search->get_total(),“per_page”=>$users_per_page,));}/***输出“无用户”消息。**@自3.1.0起*/公共函数no_items(){_e(“未找到用户。”);}/***返回列出可使用的所有视图的关联数组*用这张桌子。**提供角色列表和该角色的用户计数*用户表的筛选。**@自3.1.0起**@global字符串$role**@return string[]由视图键控的HTML链接数组。*/受保护的函数get_views(){全球$角色;$wp_roles=wp_rores();$count_users=!wp_is_large_user_count();if($this->issiteusers){$url='site-users.php?id=“$此->站点id;}其他{$url=“users.php”;}$role_links=数组();$avail_roles=数组();$all_text=__(“全部”);if($count_users){if($this->issiteusers){switch_to_blog($this->site_id);$users_of_blog=count_users('time',$this->site_id);恢复当前日志();}其他{$users_of_blog=计数用户();}$total_users=$users_of_blog['total_users'];$avail_roles=&$users_of_blog['可用角色'];取消设置($users_of_blog);$all_text=冲刺(/*转换器:%s:用户数*/_nx(纳克斯)('所有<span class=“count”>(%s)</span>','所有<span class=“count”>(%s)</span>',$total_users,'用户'),number_format_i18n(总计$个用户));}$role_links['all']=数组(“url”=>$url,“label”=>$all_text,“当前”=>空($role),);foreach($wp_roles->get_names()作为$this_role=>$name){if($count_users&&!isset($avail_roles[$this_role]){继续;}$name=translate_user_role($name);if($count_users){$name=冲刺(/*转换器:1:用户角色名称,2:用户数*/__(“%1$s(%2$s)”),$名称,number_format_i18n($avail_roles[$this_role]));}$role_links[$this_role]=数组(“url”=>esc_url(add_query_arg(“角色”,$this_role,$url)),“label”=>$name,“当前”=>$this_role===$role,);}if(!empty($availary_roles['none'])){$name=__(“无角色”);$name=冲刺(/*转换器:1:用户角色名称,2:用户数*/__(“%1$s(%2$s)”),$名称,number_format_i18n($可用角色[“一个”]));$role_links['none']=数组(“url”=>esc_url(add_query_arg(“角色”,“无”,$url)),“label”=>$name,“当前”=>“无”===$role,);}返回$this->get_views_links($role_links);}/***检索此表上可用的批量操作的关联数组。**@自3.1.0起**@return array批量操作标签的数组,由其操作键控。*/受保护函数get_bulk_actions(){$actions=数组();if(is_multisite()){if(current_user_can('remove_users')){$actions['remove']=__('remove');}}其他{if(current_user_can('delete_users')){$actions['delete']=__('删除');}}//在批量操作下拉列表中添加密码重置链接。if(current_user_can('edit_users')){$actions['resetpassword']=__('发送密码重置');}返回$actions;}/***输出控件以允许批量更改用户角色。**@自3.1.0起**@param string$which这是否在上面被调用(“top”)*或表格下方(“底部”)。*/受保护函数extra_tablenav($which){$id=“底部”===$哪个?'new_role2':'新角色';$button_id='bottom'===$which?'changeit2“:”changeit“;?><div class=“alignleft actions”><?php if(current_user_can('promote_users')&&$this->has_items()):?><label class=“screen-reader-text”for=“<?php-echo$id;?>”><?php(电话)/*翻译器:隐藏的辅助功能文本*/_e('将角色更改为&hellip;');?></label><select name=“<?php-echo$id;?>”id=“<?php-echo$id;?>“><选项值=“”><?php_e('将角色更改为&hellip;');?></选项><?php wp_dropdown_roles();?><选项值=“无”><?php_e(“此站点没有角色”);?></选项></选择><?php(电话)submit_button(__('更改'),'',$button_id,false);endif;/***在包含批量角色更改控件的关闭div之前激发*在“用户”列表中。**@自3.5.0起*@since 4.6.0添加了`$which`参数。**@param string$其中额外表导航标记的位置:“top”或“bottom”。*/do_action('restrict_manage_users',$which);?></div><?php(电话)/***在tablenav中为用户关闭“actions”div后立即激发*列表表。**@自4.9.0起**@param string$其中额外表导航标记的位置:“top”或“bottom”。*/do_action('manage_users_extra_tablenav',$which);}/***捕获所需的批量操作并将其返回。**从基类实现重写以捕获*角色更改下拉列表。**@自3.1.0起**@return string需要批量操作。*/公共函数current_action(){if(isset($_REQUEST['changeit'])){return‘promote’;}return parent::current_action();}/***获取列表表的列列表。**@自3.1.0起**@return string[]由列名键入的列标题数组。*/公共函数get_columns(){$columns=数组('cb'=>'<input type=“checkbox”/>','用户名'=>__('用户名'),'名称'=>__('名称'),“电子邮件”=>__(“电子邮件”),“角色”=>__(“角色”),“posts”=>_x(“posts”,“post type general name”),);if($this->issiteusers){取消设置($columns['posts']);}返回$columns;}/***获取列表表的可排序列的列表。**@自3.1.0起**@return数组可排序列的数组。*/受保护函数get_sortable_columns(){$columns=数组('username'=>数组('login',false,__('username'),__('按用户名排序的表'),'asc'),'email'=>数组('email],false,__('E-mail'),__('按电子邮件排序的表格'),);返回$columns;}/***生成列表表行。**@自3.1.0起*/公共函数display_rows(){//查询此页面的帖子计数。if(!$this->is_site_users){$post_counts=count_many_users_posts(数组键($this->items));}foreach($this->项目为$userid=>$user_object){echo“\n\t”$this->singlerow($userobject,'','',isset($postcounts)$post_counts[$userid]:0);}}/***在users.php管理面板上为单行生成HTML。**@自3.1.0起*@since 4.2.0不推荐使用`$style`参数。*@自4.4.0起,“$role”参数已被弃用。**@param WP_User$User_object当前用户对象。*@param string$style已弃用。未使用。*@param string$role已弃用。未使用。*@param int$numposts可选。要为此用户显示的过帐计数。默认值*到零,如中所示,新用户发布的帖子为零。*@return string单行的输出。*/公共函数single_row($user_object,$style='',$role='',$numposts=0){if(!(WP_user的$user_object实例){$用户对象=获取用户数据((int)$用户对象);}$user_object->filter='display';$email=$user_object->user_email;if($this->issiteusers){$url=“site-users.php?id={$this->site_id}&amp;”;}其他{$url=“users.php?”;}$user_roles=$this->get_role_list($user_object);//为此用户设置悬停操作。$actions=数组();$checkbox=“”;$super_admin=“”;if(is_multisite()&&current_user_can('manage_network_users')){if(in_array($user_object->user_login,get_super_admins(),true)){$super_admin=“&mdash;”__(“超级管理员”);}}//检查此行的用户是否可编辑。if(current_user_can('list_users')){//设置用户编辑链接。$edit_link=esc_url(添加查询(_arg)(“wp_http_referer”,urlencode(wp_unslash($_SERVER['REQUEST_URI']),get_edit_user_link($user_object->ID)));if(current_user_can('edit_user',$user_object->ID)){$edit=“<strong><a href=\”{$edit_link}\“>{$user_object->user_login}</a>{$super_admin}</strong><br/>“;$actions['edit']='<a href=“'.$edit_link.'”>'__(“编辑”)。”</a> ';}其他{$edit=“<strong>{$user_object->user_login}{$super_admin}</strong><br/>”;}if(!是多站点()&&获取当前用户id()!==$用户对象->ID&&current_user_can('delete_user',$user_object->ID)) {$actions['delete']=“<a class='submitdelete'href='”。wp_nonce_url(“users.php?action=delete&amp;user=$user_object->ID”,'bulk-users')。"'>" . __(“删除”)</a> ';}if(is_multisite())&&current_user_can('remove_user',$user_object->ID)) {$actions['remove']=“<a class='submitdelete'href='”。wp_nonce_url($url.“action=remove&amp;user=$user_object->ID”,'bulk-users')。"'>" . __(“删除”)。”</a> ';}//如果不为空,请添加指向用户作者档案的链接。$author_posts_url=获取_author_posts_ url($user_object->ID);if($author_posts_url){$actions['view']=冲刺('<a href=“%s”aria-label=“%s”>%s</a>',esc_url($author_posts_url),/*转换器:%s:作者的显示名称*/esc_attr(sprintf(__('按%s查看帖子'),$user_object->display_name)),__(“视图”));}//添加链接以通过电子邮件向用户发送重置密码链接。if(获取当前用户id()!==$用户对象->ID&&current_user_can('edit_user',$user_object->ID)&&true===wp_is_password_reset_allowed_for_user($user_object)) {$actions['resetpassword']=“<a class='resetpassword'href='”。wp_nonce_url(“users.php?action=resetpassword&amp;users=$user_object->ID”,'bulk-users')。"'>" . __('发送密码重置')。'</a> ';}/***过滤“用户”列表中每个用户下显示的操作链接。**@自2.8.0起**@param string[]$actions要显示的操作链接数组。*单个站点的默认“编辑”、“删除”,以及*多站点的“编辑”、“删除”。*@param WP_User$User_object当前列出用户的WP_User对象。*/$actions=应用过滤器('user_row_actions',$actions,$user_object);//角色类。$role_classes=esc_attr(内爆('',array_keys($user_roles)));//设置复选框(因为用户是可编辑的,否则为空)。$checkbox=疾跑('<input type=“checkbox”name=“users[]”id=“user_%1$s”class=“%2$s”value=“%1$s”/>'。'<label for=“user_%1$s”><span class=“screen-reader-text”>%3$s</span></label>',$user_object->ID,$role_classes,/*转换器:隐藏的辅助功能文本。%s: 用户登录*/sprintf(__('选择%s'),$user_object->user_login));}其他{$edit=“<strong>{$user_object->user_login}{$super_admin}</strong>”;}$avatar=get_avatar($user_object->ID,32);//以逗号分隔的用户角色列表。$roles_list=内爆(',',$user_roles);$row=“<tr id='user-$user_object->id'>”;列表($columns,$hidden,$sortable,$primary)=$this->get_column_info();foreach($columns as$column_name=>$columnd_display_name){$classes=“$column_name column-$column _name”;if($primary===$column_name){$classes.='has-row-actions-column-primary';}if(“帖子”===$column_name){$classes.='编号';//该列的特例。}if(in_array($column_name,$hidden,true)){$classes.='隐藏';}$data='数据-名称=“'.esc_attr(wp_strip_all_tags($column_display_name)).'”';$attributes=“class='$classes'$data”;if('cb'===$column_name){$row.=行“$checkbox”;}其他{$row.=行“<td$属性>”;开关($column_name){案例“用户名”:$row.=行“$avatar$edit”;断裂;案例“名称”:if($user_object->first_name&&$user_object->last_name){$row.=行冲刺(/*翻译:1:用户的名字,2:姓氏*/_x(“%1$s%2$s”,“根据名字和姓氏显示名称”),$user_object->first_name,$user_object->last_name);}elseif($user_object->first_name){$row.=行$user_object->first_name;}elseif($user_object->last_name){$row.=行$user_object->last_name;}其他{$row.=行冲刺('<span aria-hidden=“true”>&#8212</span><span class=“屏幕阅读器文本”>%s</span>',/*翻译人员:隐藏的辅助功能文本*/_x(“未知”,“名称”));}断裂;案例“电子邮件”:$row.=行“<a href='”。esc_url(“mailto:$email”)。“'>$电子邮件</a>”;断裂;案例“角色”:$row.=行esc_html($roles_list);断裂;案例“帖子”:if($numposts>0){$row.=行冲刺('<a href=“%s”class=“edit”><span aria-hidden=“true”>%s</span><span class=“screen-reader-text”>%s</span></a>',“edit.php?author={$user_object->ID}”,$numposts个,冲刺(/*转换器:隐藏的辅助功能文本。%s: 帖子数量*/_n(“此作者的%s帖子”,“此作者发布的%s贴子”,$numposts),number_format_i18n($numposts)));}其他{$row.=行0;}断裂;违约:/***过滤用户列表表中自定义列的显示输出。**@自2.8.0起**@param string$output自定义列输出。默认为空。*@param string$column_name列名。*@param int$user_id当前列表用户的id。*/$row.=行apply_filters('manage_users_custom_column','',$column_name,$user_object->ID);}if($primary===$column_name){$row.=行$this->rowactions($actions);}$row.='</td>';}}$row.='</tr>';return$row;}/***获取默认主列的名称。**@自4.3.0起**@return string默认主列的名称,在本例中为“username”。*/受保护函数get_default_primary_column_name(){return‘用户名’;}/***返回给定用户对象的已转换用户角色名称数组。**@自4.4.0起**@param WP_User$User_object WP_User对象。*@return string[]由角色键入的用户角色名称数组。*/受保护函数get_role_list($user_object){$wp_roles=wp_rores();$role_list=数组();foreach($user_object->角色作为$role){if(isset($wp_roles->role_names[$role]){$role_list[$role]=翻译用户角色($wp_roles->role_names[$role]);}}if(空($role_list)){$role_list['none']=_x('无','无用户角色');}/***过滤用户的已翻译角色名称的返回数组。**@自4.4.0起**@param string[]$role_list按角色键入的已翻译用户角色名称的数组。*@param WP_User$User_object WP_User对象。*/return apply_filters('get_role_list',$role_llist,$user_object);}}

变更日志

版本描述
3.1.0介绍。

用户贡献的笔记

你必须登录在能够发表注释或反馈之前。