get_edit_user_link()
云策文档标注
概述
get_edit_user_link() 函数用于获取编辑用户页面的 URL。它接受一个可选的用户 ID 参数,并基于当前用户的权限和用户数据生成链接,支持通过 Hook 进行过滤。
关键要点
- 函数返回编辑用户页面的 URL 字符串,若无权限或用户不存在则返回空字符串
- 参数 $user_id 可选,默认为 null,未提供时使用当前用户 ID
- 内部检查 current_user_can('edit_user', $user_id) 权限,确保用户有编辑权限
- 使用 get_edit_profile_url() 或 self_admin_url() 构建链接,取决于是否为当前用户
- 通过 apply_filters('get_edit_user_link', $link, $user_id) Hook 允许自定义过滤
代码示例
// 获取当前用户的编辑链接
$link = get_edit_user_link();
// 获取指定用户 ID 的编辑链接
$link = get_edit_user_link( 123 );注意事项
- 确保在调用前用户已登录或有相应权限,否则可能返回空字符串
- 链接生成依赖于 WordPress 管理界面路径,适用于后台环境
- 相关函数包括 get_edit_profile_url()、self_admin_url() 等,用于辅助构建 URL
原文内容
Retrieves the edit user link.
Parameters
$user_idintoptional-
User ID. Defaults to the current user.
Default:
null
Source
function get_edit_user_link( $user_id = null ) {
if ( ! $user_id ) {
$user_id = get_current_user_id();
}
if ( empty( $user_id ) || ! current_user_can( 'edit_user', $user_id ) ) {
return '';
}
$user = get_userdata( $user_id );
if ( ! $user ) {
return '';
}
if ( get_current_user_id() === $user->ID ) {
$link = get_edit_profile_url( $user->ID );
} else {
$link = add_query_arg( 'user_id', $user->ID, self_admin_url( 'user-edit.php' ) );
}
/**
* Filters the user edit link.
*
* @since 3.5.0
*
* @param string $link The edit link.
* @param int $user_id User ID.
*/
return apply_filters( 'get_edit_user_link', $link, $user->ID );
}
Hooks
- apply_filters( ‘get_edit_user_link’, string $link, int $user_id )
-
Filters the user edit link.
Changelog
| Version | Description |
|---|---|
| 3.5.0 | Introduced. |
Skip to note 3 content
Codex
Basic Example
Get the edit user link for the user currently viewing the page.
<a href="<?php echo get_edit_user_link(); ?>">name</a>Skip to note 4 content
Codex
Each editor’s link
Get a link for each editor in the database
$user = new WP_User_Query( array( 'role' => 'editor' )); $editor = $users->get_results(); foreach( $editor as $e ){ $userdata = get_userdata( $e->ID ); echo '<a href="'. get_edit_user_link( $e->ID ) .'">'. esc_attr( $userdata->user_nicename ) .'</a>'; }