点击 wp-admin 时如何将非管理员和最终用户重定向到家
How do I re-direct non admin and end users to home when hitting wp-admin
当外部用户或非管理员尝试访问 http://www.urlVisibleToUsers.com/wp-admin
时,会被重定向到一个错误页面,但 home_url
(WP 安装所在的位置)仍然是可见的。我希望能够将所有最终用户或任何非管理员的角色重定向到 http://www.urlVisibleToUsers.com/
并防止 adjax 调用中断。我的 functions.php
中有以下代码,但外部用户仍然会在导航栏中看到 home_url
地址(尽管显示错误页面):
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 in order to have ALM working
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();
}
}
不确定为什么上面的代码不起作用,这是正确的方法吗?我是否应该在我的 .htaccess 中引入 Apache 重定向规则?
将代码用作插件,主题函数 运行 对于某种 action/filter 挂钩非常晚。
更好的是,只需将其添加为 mu-plugin,无需安装,无法通过管理面板禁用:https://codex.wordpress.org/Must_Use_Plugins
<?php
/**
* Plugin Name: Admin only for admins
*/
add_action( 'admin_init', function(){
if( defined('DOING_AJAX') && DOING_AJAX ) {
return;
}
if( ! current_user_can( "manage_options" ) ) {
wp_redirect( get_site_url( ) );
exit();
}
});
在您的 functions.php 中输入此代码
function redirect_non_admin_user(){
if ( is_user_logged_in() ) {
if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){
wp_redirect( site_url() ); exit;
}
}
}
add_action( 'admin_init', 'redirect_non_admin_user' );
当外部用户或非管理员尝试访问 http://www.urlVisibleToUsers.com/wp-admin
时,会被重定向到一个错误页面,但 home_url
(WP 安装所在的位置)仍然是可见的。我希望能够将所有最终用户或任何非管理员的角色重定向到 http://www.urlVisibleToUsers.com/
并防止 adjax 调用中断。我的 functions.php
中有以下代码,但外部用户仍然会在导航栏中看到 home_url
地址(尽管显示错误页面):
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 in order to have ALM working
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();
}
}
不确定为什么上面的代码不起作用,这是正确的方法吗?我是否应该在我的 .htaccess 中引入 Apache 重定向规则?
将代码用作插件,主题函数 运行 对于某种 action/filter 挂钩非常晚。
更好的是,只需将其添加为 mu-plugin,无需安装,无法通过管理面板禁用:https://codex.wordpress.org/Must_Use_Plugins
<?php
/**
* Plugin Name: Admin only for admins
*/
add_action( 'admin_init', function(){
if( defined('DOING_AJAX') && DOING_AJAX ) {
return;
}
if( ! current_user_can( "manage_options" ) ) {
wp_redirect( get_site_url( ) );
exit();
}
});
在您的 functions.php 中输入此代码
function redirect_non_admin_user(){
if ( is_user_logged_in() ) {
if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){
wp_redirect( site_url() ); exit;
}
}
}
add_action( 'admin_init', 'redirect_non_admin_user' );