You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为WordPress新用户仅开放Newsletter插件的后台访问权限?

解决方案:为Newsletter插件创建专属权限用户

一、插件方案

1. User Role Editor

这款插件能直观自定义用户角色权限,操作步骤:

  • 安装激活后进入「用户 → 用户角色编辑器」
  • 点击「添加角色」,创建新角色(比如命名为「Newsletter管理员」)
  • 在权限列表里只勾选Newsletter相关权限(通常以manage_newsletter、edit_newsletter等开头,可通过插件权限标识确认)
  • 切换到「菜单访问」标签,隐藏所有非Newsletter的后台菜单
  • 创建新用户并分配该角色即可

2. Members

主流权限管理插件,操作逻辑类似:

  • 激活后进入「角色 → 添加新角色」
  • 为新角色分配Newsletter所需的核心权限
  • 利用插件的「菜单权限」功能,禁用其他后台菜单入口
  • 给目标用户分配该角色

二、代码方案(无需额外插件)

如果不想依赖插件,可将以下代码添加到主题functions.php或自定义插件中:

1. 创建自定义角色并分配Newsletter权限

add_action('init', 'create_newsletter_only_role');
function create_newsletter_only_role() {
    // 创建仅具备Newsletter权限的角色
    add_role(
        'newsletter_manager',
        'Newsletter 管理员',
        array(
            'read' => true, // 必须保留,否则无法登录后台
            'manage_newsletters' => true, // Newsletter核心管理权限
            'edit_newsletters' => true,
            'publish_newsletters' => true,
            'delete_newsletters' => true,
        )
    );
}

2. 隐藏后台无关菜单

add_action('admin_menu', 'remove_unwanted_menus_for_newsletter_role');
function remove_unwanted_menus_for_newsletter_role() {
    $current_user = wp_get_current_user();
    if (in_array('newsletter_manager', $current_user->roles)) {
        // 移除所有非必要后台菜单
        remove_menu_page('index.php'); // 仪表盘
        remove_menu_page('edit.php'); // 文章
        remove_menu_page('upload.php'); // 媒体库
        remove_menu_page('edit.php?post_type=page'); // 页面
        remove_menu_page('edit-comments.php'); // 评论
        remove_menu_page('themes.php'); // 外观
        remove_menu_page('plugins.php'); // 插件
        remove_menu_page('users.php'); // 用户
        remove_menu_page('tools.php'); // 工具
        remove_menu_page('options-general.php'); // 设置
        // 保留Newsletter菜单,若slug不同可通过页面源码查看实际值
    }
}

3. 限制直接访问未授权页面

防止用户通过URL跳转至非允许页面:

add_action('admin_init', 'restrict_admin_pages_for_newsletter_role');
function restrict_admin_pages_for_newsletter_role() {
    $current_user = wp_get_current_user();
    if (in_array('newsletter_manager', $current_user->roles)) {
        // 允许访问的Newsletter页面slug,需根据插件实际路径调整
        $allowed_pages = array('newsletter', 'newsletter_subscribers', 'newsletter_campaigns');
        $current_page = isset($_GET['page']) ? $_GET['page'] : '';
        
        if (!in_array($current_page, $allowed_pages) && $GLOBALS['pagenow'] !== 'admin.php') {
            wp_redirect(admin_url('admin.php?page=newsletter'));
            exit;
        }
    }
}

注意事项

  • 确认Newsletter具体权限名:可查看插件代码,或临时用User Role Editor查看所有可用权限
  • 代码建议放在自定义插件中,避免主题更新丢失
  • 测试时用新角色用户登录,验证权限是否符合预期

内容的提问来源于stack exchange,提问作者Chetan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:50:21