限制 WordPress 后端访问,没有冲突的形式
Restrict WordPress backend access, without conflicting forms
我在 WordPress 中有一个标准表单,我正在努力限制对 WordPress 后端和正常工作表单的访问,因为表单是通过 wp-admin 处理的,如果受到限制,则不会处理表单。
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
...
</form>
限制后端访问:
// Restrict users to enter backend
add_action('init', 'restrict_backend_access');
function restrict_backend_access() {
if (is_admin() && current_user_can('subscriber') && !(defined('DOING_AJAX') && DOING_AJAX)){
wp_redirect( '/dashboard/' );
exit;
}
}
我错过了什么吗?我知道这是可能的,因为我构建了很多次,但这次有些不同,我不知道为什么。
谢谢!
请找到正确的代码如下:
add_action( 'init', 'restrict_backend_access' );
function restrict_backend_access() {
if( is_admin() && ! current_user_can( 'subscriber' ) && !( defined( ‘DOING_AJAX’ ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}
您可以根据需要设置重定向。
例如替换
wp_redirect( home_url() )
与
wp_redirect( '/dashboard/' );
您可以在表单中添加隐藏字段
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
...
<input type="hidden" name="admin_post_request" value="1" />
</form>
然后用它绕过重定向
add_action( 'init', 'restrict_backend_access' );
function restrict_backend_access() {
if( is_admin() && ! current_user_can( 'subscriber' ) && !( defined( ‘DOING_AJAX’ ) && DOING_AJAX && !isset( $_GET['admin_post_request'] ) ) ) {
wp_redirect( home_url() );
exit;
}
}
我在 WordPress 中有一个标准表单,我正在努力限制对 WordPress 后端和正常工作表单的访问,因为表单是通过 wp-admin 处理的,如果受到限制,则不会处理表单。
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
...
</form>
限制后端访问:
// Restrict users to enter backend
add_action('init', 'restrict_backend_access');
function restrict_backend_access() {
if (is_admin() && current_user_can('subscriber') && !(defined('DOING_AJAX') && DOING_AJAX)){
wp_redirect( '/dashboard/' );
exit;
}
}
我错过了什么吗?我知道这是可能的,因为我构建了很多次,但这次有些不同,我不知道为什么。
谢谢!
请找到正确的代码如下:
add_action( 'init', 'restrict_backend_access' );
function restrict_backend_access() {
if( is_admin() && ! current_user_can( 'subscriber' ) && !( defined( ‘DOING_AJAX’ ) && DOING_AJAX ) ) {
wp_redirect( home_url() );
exit;
}
}
您可以根据需要设置重定向。 例如替换
wp_redirect( home_url() )
与
wp_redirect( '/dashboard/' );
您可以在表单中添加隐藏字段
<form action="<?php echo admin_url('admin-post.php'); ?>" method="post">
...
<input type="hidden" name="admin_post_request" value="1" />
</form>
然后用它绕过重定向
add_action( 'init', 'restrict_backend_access' );
function restrict_backend_access() {
if( is_admin() && ! current_user_can( 'subscriber' ) && !( defined( ‘DOING_AJAX’ ) && DOING_AJAX && !isset( $_GET['admin_post_request'] ) ) ) {
wp_redirect( home_url() );
exit;
}
}