我们如何限制除管理员以外的所有用户访问WP admin区域
我们网站上的用户有自己的个人资料页,可以完成他们需要的所有功能。
所以除了管理员之外,管理员应该禁止所有人访问。
如何做到这一点?
我们如何限制除管理员以外的所有用户访问WP admin区域
我们网站上的用户有自己的个人资料页,可以完成他们需要的所有功能。
所以除了管理员之外,管理员应该禁止所有人访问。
如何做到这一点?
我们可以钓到admin_init
操作并使用检查用户是否为管理员current_user_can()
函数查看当前用户是否可以manage_options
, 这是只有管理员才能做到的。
将此代码粘贴到函数中时。php文件,当非管理员尝试访问仪表板时,将显示一条消息:
function wpse_11244_restrict_admin() {
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
return;
}
if ( ! current_user_can( \'manage_options\' ) ) {
wp_die( __( \'You are not allowed to access this part of the site\' ) );
}
}
add_action( \'admin_init\', \'wpse_11244_restrict_admin\', 1 );
如果愿意,您可以通过将用户重定向到主页来提供更好的用户体验:function wpse_11244_restrict_admin() {
if ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) {
return;
}
if ( ! current_user_can( \'manage_options\' ) ) {
wp_redirect( home_url() );
exit;
}
}
add_action( \'admin_init\', \'wpse_11244_restrict_admin\', 1 );
如果要将用户重定向到其配置文件页面,请替换home_url()
在上面的代码中使用链接。您可以编写一个插件并挂接到admin_init
.
codex实际上给出了一个您正在寻找的功能的示例。
http://codex.wordpress.org/Plugin_API/Action_Reference/admin_init#Example:_Access_control
在大多数情况下,给出的一些答案可以很好,但我认为没有一个答案可以保证完全按照要求执行,因为没有一个答案检查用户角色,它们检查功能,并且可以从角色中分配和删除功能。因此,要给出准确的答案,必须检查用户角色,而不是功能:
add_action( \'admin_init\', \'allow_admin_area_to_admins_only\');
function allow_admin_area_to_admins_only() {
if( defined(\'DOING_AJAX\') && DOING_AJAX ) {
//Allow ajax calls
return;
}
$user = wp_get_current_user();
if( empty( $user ) || !in_array( "administrator", (array) $user->roles ) ) {
//Redirect to main page if no user or if the user has no "administrator" role assigned
wp_redirect( get_site_url( ) );
exit();
}
}
如果要检查用户是否具有“manage\\u options”功能,可以。事实上,在大多数情况下,这是最好的选择。虽然默认情况下此功能与管理员用户关联,但可以从管理员角色中删除此功能,也可以将其分配给其他用户角色。这就是为什么在大多数情况下,检查用户能做什么或不能做什么比检查用户角色更好的原因。因此,在大多数情况下,检查能力应该是选择的方式,但您必须明确这一概念,并根据您的情况和目的选择最佳选项:add_action( \'admin_init\', \'admin_area_for_manage_options_only\');
function admin_area_for_manage_options_only() {
if( defined(\'DOING_AJAX\') && DOING_AJAX ) {
//Allow ajax calls
return;
}
if( ! current_user_can( "manage_options" ) ) {
//Redirect to main page if the user has no "manage_options" capability
wp_redirect( get_site_url( ) );
exit();
}
}
尝试Adminimize 插件<你可以用它把事情锁定得很好。
您也可以尝试设置accessthrough htaccess file
function wpse_11244_restrict_admin() {
if (!current_user_can(\'update_core\')) {
wp_die(__(\'You are not allowed to access this part of the site\'));
}
}
add_action(\'admin_init\', \'wpse_11244_restrict_admin\', 1);
把这些线放在你的functions.php
function baw_no_admin_access()
{
if( !current_user_can( \'administrator\' ) ) {
wp_redirect( home_url() );
die();
}
}
add_action( \'admin_init\', \'baw_no_admin_access\', 1 );
试试这个,不要在最终用户面前犯错误。针对良好的用户体验。此代码将它们重定向到主页。
add_action( \'init\', \'blockusers_init\' );
function blockusers_init() {
if ( is_admin() && ! current_user_can( \'administrator\' ) &&
! ( defined( \'DOING_AJAX\' ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}
我会使用WP Frontend 并为除管理员以外的所有人设置。
wordpress管理面板和登录页面wp如何登录。php是否被隐藏,以便只有网站管理员才能访问?URL是否可以通过某种mod\\u重写规则重写,而不用担心破坏任何东西(抛开所有插件)?最好的解决方案不应基于IP地址,这意味着管理员只能从一台或一组计算机访问网站。