主页/WordPress笔记/博客文章/综合文章/如何禁止WordPress管理栏显示给除管理员之外的所有用户

如何禁止WordPress管理栏显示给除管理员之外的所有用户

Bug编译狮

Bug编译狮

要禁止WordPress管理栏(通常称为“仪表板”或“后台”)仅允许管理员访问,可以按照以下步骤操作:

步骤1: 登录到WordPress后台

首先,你需要登录到你的WordPress网站的后台。

步骤2: 找到并编辑权限设置

  • 在WordPress后台菜单导航中,找到并点击管理员
  • 选择相应的管理员账户,然后点击权限选项卡。

步骤3: 修改权限设置

在权限设置页面,你会看到一个名为管理后台的部分。在这个部分下,你可以为不同的角色分配不同的权限级别。对于非管理员用户,你需要确保他们没有管理后台权限。

示例代码:

假设你想将某个用户的权限从普通用户降级为只能查看评论和帖子,但不能修改这些内容,你可以在权限设置页面执行如下操作:

// 假设当前用户名为 'example_user'
$admin_user = 'example_user';

// 获取所有用户列表
$user_query = new WP_User_Query();
$users = $user_query->get_results();

// 遍历每个用户
foreach ($users as $user) {
    // 检查用户是否不是管理员
    if (!current_user_can('administrator')) {
        // 如果是管理员,则不作任何更改
        if (current_user_can($admin_user)) {
            continue;
        }

        // 将该用户添加到黑名单
        add_role_to_blacklist($admin_user, 'manager');
    }
}

function add_role_to_blacklist($role_name, $blacklisted_roles) {
    global $wpdb;

    $wpdb->query(
        "INSERT INTO `wp_capabilities` (`user_id`, `caps`) VALUES (
            (SELECT ID FROM {$wpdb->prefix}users WHERE user_login='{$role_name}'),
            '{$blacklisted_roles}'
        )"
    );
}

这个脚本会自动将指定的角色添加到黑名单中,阻止其他用户对该角色拥有管理后台权限。

使用步骤及效果说明:

  1. 登录:打开浏览器,输入你的WordPress网址,登录你的账户。
  2. 进入后台:点击右上角的管理后台链接,进入WordPress后台。
  3. 检查权限:在权限设置页面,可以看到所有可用的管理员角色以及它们的权限级别。
  4. 修改权限:找到想要修改权限的角色,如普通用户,将其权限从管理员改为只读或禁用。
  5. 保存更改:完成上述步骤后,点击页面顶部的更新权限按钮,以保存更改。

通过以上步骤,你可以有效地控制哪些用户可以访问WordPress的后台界面。

黑板前的Bug语法讲师

黑板前的Bug语法讲师

要实现这个功能,你需要修改WordPress的配置文件(wp-config.php),并在其中添加以下代码:

define('WP_ALLOW_IP', '127.0.0.1');

这里,WP_ALLOW_IP 是一个全局变量,它允许特定IP地址访问WordPress管理界面。

接下来,我们需要设置一个阻止其他IP地址访问管理栏的过滤器。这可以通过使用WordPress的add_filter()函数来完成。首先,创建一个新的PHP文件,例如 wp-login.php 并编辑它以包含以下代码:

<?php if (!defined('ABSPATH')) exit; ?>
<!-- This is the login form -->
<form method="post" action="<?php echo esc_url(esc_url(home_url('/login/')); ?>" class="login">
    <?php wp_login_form(); ?>
</form>

然后,在functions.php文件中添加以下代码:

function wp_login_action() {
    global $wp_version;
    if (version_compare($wp_version, '4.3') >= 0) {
        return;
    }
    add_filter('pre_user_login', '__return_false');
}

最后,在你的主题的.php文件中添加以下代码:

function my_theme_setup() {
    // Add our custom filter to prevent IP access
    add_filter('pre_user_login', 'wp_login_action');
}

现在,你应该能够看到你的管理员账户登录页面不会向非管理员用户提供,除非他们输入正确的管理员密码并点击“登录”。请注意,这可能需要一些时间才能生效,因为WordPress可能会有缓存问题。如果你还没有这样做,可以考虑使用update_option('wp_login_redirect_to_admin_page', true);来强制更新登录后的重定向到管理员页面。