Редирект с wp-login рабочей версии сайта на админку dev. версии сайта на Wordpress

Нужно реализовать редирект при попытке входа в админ-панель Wordpress на рабочей версии сайта, чтобы при переходе на example.com/wp-admin/ происходило перенаправление на dev.example.com/wp-admin/

Логика в том, что все работы с сайтом происходят на dev.example.com и периодически все изменения деплоятся на example.com и соответственно каждый деплой происходит обновление всех файлов на последнем

Хочется внедрить данное решение, во избежание работы с сайтом на оригинальной версии, потому что при деплое с dev версии перезаписываются все внесенные изменения на оригинале

Также нюансы:

  • при деплое скрипт заменяет все ссылки вида dev.example.com на example.com, поэтому желательно не использовать в функции полноценный url
  • при переходе на dev.example.com/wp-admin/ как обычно должна открываться форма входа в админ-панель (возможно, функция в php должна иметь проверку на наличие поддомена dev. / исключение для поддомена dev.)
  • была попытка реализовать следующую функцию в functions.php:
function custom_login(){
 global $pagenow;
 if( 'wp-login.php' == $pagenow && !is_user_logged_in()) {
  wp_redirect('dev.example.com/wp-admin/');
  exit();
 }
}

но нюанс в том, что функция работает для example.com/wp-admin/, но при этом, очевидно, получаем зацикленный редирект на dev.example.com/wp-admin/

  • мы не можем сделать разные функции на двух версиях сайта, так как периодически происходит деплой и файлы на последнем перезаписываются, функция должна быть универсальна и корректно работать как на dev. так и на оригинале

Ответы (1 шт):

Автор решения: Aleksey Vaganov

На продакшен сервере удалите админов, которым доступ туда запрещен или лишите их роли админов.

Если же у вас одна база данных на dev и prod, то на уровне вебсервера для папки wp-admin на prod установите дополнительно http авторизацию. В nginx это делается так. Apache так.

→ Ссылка