使用域映射的WP多站点:阻止用户访问仪表板

时间:2013-07-09 作者:Chris

我有一个主题被一个子文件夹multisite和一个域映射的multisite使用。

E、 g。

mywpsite。com/站点1

mywpsite。com/站点2

www.site2。com(导致上述情况)

我的函数中有这段代码。php文件

function my_wp_admin_ban(){
if( !current_user_can(\'activate_plugins\') ){
wp_redirect( get_bloginfo(\'url\') );
exit;
}
}

add_action(\'admin_init\',\'my_wp_admin_ban\');
这将成功阻止site1的成员访问admin(wp admin)仪表板区域。

然而,此代码似乎不适用于site2。

相反,这些用户会显示“您没有足够的权限访问此页面。”错误消息。

尝试了我能想到的一切,包括做同一件事的不同方式,即。How to redirect non admins to homepage if trying to view mysite.com/wp-admin/?How do I remove dashboard access from specific user roles?

如何确保将多站点的所有用户(非管理员)重定向到远离仪表板区域?

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

文件functions.php 不是运行这种代码的地方。看见Where do I put the code snippets I found here or somewhere else on the web?

您可以使用Must Use plugin 或者制作一个简单的,然后激活网络。

它是这样的:

<?php
/* Plugin Name: Only admins on dashboard */

add_action( \'admin_init\', \'admin_ban_wpse_105863\' );

function admin_ban_wpse_105863()
{
    if( !current_user_can( \'activate_plugins\' ) ){
        wp_redirect( site_url() );
        exit;
    }
}
Thedocumentation for the function get_bloginfo 为许多情况推荐了替代方案。这个site_url 函数负责使用当前的博客URL。

<小时>[update]
错误消息出现的唯一位置...permissions to access...出现在文件中wp-admin/includes/menu.php. 它有一个有用的钩子:

add_action( \'admin_page_access_denied\', \'denied_ban_wpse_105863\' );

function denied_ban_wpse_105863()
{
    wp_redirect( site_url() );
    exit;
}

结束