The file functions.php
is not the place to run this kind of code. See Where do I put the code snippets I found here or somewhere else on the web?
You can use a Must Use plugin or make a simple one and Network Activate.
It would go like this:
<?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;
}
}
The documentation for the function get_bloginfo
has recommended alternatives for many cases. The site_url
function takes care of using the current blog URL.
[update]
The only place where the error message ...permissions to access...
appears is in the file wp-admin/includes/menu.php
. And it has an useful hook:
add_action( 'admin_page_access_denied', 'denied_ban_wpse_105863' );
function denied_ban_wpse_105863()
{
wp_redirect( site_url() );
exit;
}