У меня есть сайт WordPress и 2 вида пользователей. Админы и подписчики. Если абонент пытается получить доступ к области wp-admin, я хочу, чтобы он перенаправил на домашнюю страницу сайта. У меня есть функция, чтобы сделать это, но когда я пытаюсь получить доступ к другой странице на сайте, например, чтобы разместить комментарий где-то, он загружает домашнюю страницу внутри страницы, которой я сейчас являюсь, и не публикует комментарий и любые другие действия. Я делаю. Из сетевых ошибок я вижу admin-ajax.php 302 error. Я понимаю, что WordPress использует два разных хука для ajax, один для стороны администратора и один для пользователя, вышедшего из системы, и это как-то связано с моей проблемой, но я не понимаю, как это исправить.
function mt_redirect_admin(){
if ( ! current_user_can( 'edit_events' ) ){
wp_redirect( site_url() );
exit;
}
}
add_action( 'admin_init', 'mt_redirect_admin' );
Заранее спасибо за любые ответы
Решено:
function mt_redirect_admin() {
if ( ! current_user_can( 'edit_events' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
wp_redirect( site_url() );
exit;
}
}
add_action( 'admin_init', 'mt_redirect_admin', 1 );
Других решений пока нет …