如何根据查看的用户的角色隐藏用户配置文件字段?

时间:2019-12-16 作者:Chris Osiak

我想根据查看其配置文件的用户的角色(本例中由管理员查看)隐藏后端用户配置文件页面的一些默认字段。

我使用了简单的CSS方法来实现这一点(这里隐藏了Bio框):

add_action(\'admin_head\', \'my_custom_admin_css\');

function my_custom_admin_css() {
  echo \'<style>

   .user-description-wrap {
       display: none;
    }

   </style>
}
但这显然适用于所有用户角色。

是否有一种方法可以根据查看其配置文件的用户的角色有条件地应用此方法?

1 个回复
SO网友:Max Yudin

current_user_can() 检查当前用户的指定功能。看见Roles and Capabilities.

此外,CSS只是在视觉上隐藏该节,但不会将其从页面HTML中删除。以下代码检查该功能并完全删除该节。

<?php
// For example, 
// any user other than an Admin of single site installation,
// but not Multisite Admin and not SuperAdmin:
if ( ! current_user_can( \'delete_users\' ) ) {

    add_action( \'admin_head\', \'my_profile_admin_buffer_start\' );
    add_action( \'admin_footer\', \'my_profile_admin_buffer_end\' );

}

function my_remove_about_section( $buffer ) {

    // get section header and everything until the next section
    $about_section = \'~<h2>About Yourself</h2>.+?/table>~s\';
    // replace it with empty string
    $buffer = preg_replace( $about_section, \'\', $buffer, 1 );

    return $buffer;
}

function my_profile_admin_buffer_start() {
    ob_start( \'my_remove_about_section\' );
}

function my_profile_admin_buffer_end() {
    ob_end_flush();
}
整个想法是从我的旧的死前WordPress-5项目,并没有经过测试。

相关推荐

WordPress USERS表缺少索引

不久前,有人在fiverr为我设计了一个wordpress网站。完成后,他们向我发送了数据库,我将其导入到我的服务器上并进行了设置。从那以后,我意识到数据库有些古怪。我可以添加没有问题的插件,我已经在这里和那里编辑了一些页面,但是如果我尝试创建一个新的帖子、页面等,我会收到一条消息,我正在“当前编辑显示您最新帖子的页面”此外,当我查看结构时,“我的用户”表显示零索引,因此在phpMyAdmin中,我会收到一条警告消息“当前选择不包含唯一列。网格编辑、复选框、编辑、复制和删除功能不可用。”然而,如果我尝试在