Как я могу проверить, является ли текущая страница wp-login.php
или wp-signup.php
?
Есть ли более элегантные решения, чем использование $_SERVER['REQUEST_URI']
?
pages
login
registration
conditional-tags
onetrickpony
источник
источник
Ответы:
Используйте глобальный
$pagenow
, который является общим глобальным набором WordPress во время выполнения:Вы также можете проверить тип страницы входа, например, регистрация:
Следующий код считается устаревшим и не должен использоваться (
wp-register.php
устарел и впоследствии был удален некоторое время назад):источник
ЕДИНСТВЕННЫЙ НАДЕЖНЫЙ ПУТЬ:
код:
Почему это безопаснее?
1) Иногда, если вы попытаетесь проверить страницу входа в систему с помощью
REQUEST_URI
(илиSCRIPT_PATH
), вы получите НЕПРАВИЛЬНЫЕ ЗНАЧЕНИЯ, потому что многие плагины изменяют URL-адреса LOGIN & ADMIN .2)
$pagenow
в этом случае тоже даст неверное значение!Примечания:
источник
get_included_files()
кажется , наиболее точное решение (по крайней чтобы для меня).Более современный способ сделать это, он должен работать, даже если URL-адрес wp-login изменен плагинами и когда WP находится в подпапке и т.д .:
источник
return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] );
. Это кажется мне чище.$GLOBALS['pagenow']
не работает, используйте$_SERVER['PHP_SELF']
.и если ваш wordpress не установлен в корневой веб-папке, вы должны использовать некоторые параметры, например,
YOUR_WP_PATH/wp-login.php
чтобы заменить элементы в массиве.источник
Я реализовал это, используя собственный метод WordPress wp_login_url () следующим образом:
Достаточно просто сравнить оба пути (поскольку трудно быть абсолютно уверенным в использовании SSL, поскольку он может быть прекращен) ... Это означает, однако, что разработчик плагина или темы, который изменяет форму входа по умолчанию, должен был выполнить так правильно ...
источник
Меня интересует только страница регистрации, а не страница входа. Так что это может быть не всем нужно.
$ GLOBALS ['pagenow'] возвращает index.php для меня. Возможно из-за приятеля или моей темы.
Так что я использовал
Если вы проверяете тело страницы регистрации, она также имеет идентификатор, поэтому, если там написано page-id-4906 , вы можете использовать его следующим образом, если он работает лучше:
источник
Ни один из текущих ответов не сработал для меня.
Что я сделал, так это проверил, есть ли в
$_GET
массиве ключ «page» и имеет ли он значение «sign-in».источник
Несколько предложенных здесь решений сработали, поэтому я пришел с чем-то действительно простым, которое работает на обычном сайте WordPress (не тестировалось на Multisite).
Так просто как:
Он учитывает параметр url
?action=register
, который существует только тогда, когда вы находитесь на странице регистрации.источник
Вот PSR-2 версия ответа @ T.Todua. Я просто отформатировал это красиво. Это лучше для манипулирования функцией, такой как добавление фильтра для тестирования и т. Д.
источник