将非管理员用户从wp-admin/index.php(仪表板主页面)重定向到wp-admin/profile.php

时间:2015-10-24 作者:lee

我将其设置为非管理员用户无法看到“Dashboard”链接或无法访问“wp admin/index.php”主页面。我还添加了plugin that restrict non-admin users from creating a new page. 每当非管理员用户尝试添加新页面时,他们都会被意外重定向到“wp-admin/index.php?permissions_error=true“,这是主”wp-admin/index.php“,或”Dashboard“第页。

如何限制对wp管理/索引的访问。php(主仪表板页面),或将其重定向到其wp管理/配置文件。php页面?

我试图实现的目标截图:如果有人足够聪明,在url地址中的“wp admin/index.php”旁边添加了“?permissions\\u error=true”,则即使没有权限,也可以访问“wp admin/index.php”主仪表板页面。

我尝试添加“重定向301/localhost/ft/wp admin/index.php?permissions\\u error=truehttp://google.com“到.htaccess文件,但它不工作,因为”?permissions\\u error=true“

1 个回复
最合适的回答,由SO网友:chrisguitarguy 整理而成

最简单的解决方案是加入load-index.php 并将非管理员用户重定向到其配置文件。有效阻止对该页面的访问。对于本例,我将在一个函数中包装权限检查(我们将多次使用它)。

function _wpse206466_can_view()
{
    // or any other admin level capability
    return current_user_can(\'manage_options\');
}


add_action(\'load-index.php\', \'wpse206466_load_index\');
function wpse206466_load_index()
{
    if (!_wpse206466_can_view()) {
        $qs = empty($_GET) ? \'\' : \'?\'.http_build_query($_GET);
        wp_safe_redirect(admin_url(\'profile.php\').$qs);
        exit;
    }
}
如果用户无法访问“管理”菜单中的“管理索引”页面,您可能还想将其删除。要做到这一点,请admin_menu, 检查功能,然后删除页面。

add_action(\'admin_menu\', \'wpse206466_remove_index\');
function wpse206466_remove_index()
{
    if (!_wpse206466_can_view()) {
        remove_menu_page(\'index.php\');
    }
}
这些都是as a plugin.

相关推荐

“无法修改标题信息”意味着我不能使用wp_reDirect

我在一个网站上工作,新用户希望在继续之前同意阅读我们的网站政策。新用户登录后,将重定向到策略页面。要继续阅读该网站,他们需要勾选“我同意”框。我的问题是,用户不再被定向到策略页面,重定向失败。这是我收到的错误消息:PHP Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-includes/class.wp-styles.php:225) in /v