Проверьте, является ли wp-login текущая страница

Как проверить, является ли текущая страница wp-login.php или wp-signup.php ?

Есть ли более элегантные решения, чем использование $ _ SERVER ['REQUEST_URI'] ?

34 голоса | спросил onetrickpony 24 MaramThu, 24 Mar 2011 00:25:03 +03002011-03-24T00:25:03+03:0012 2011, 00:25:03

6 ответов


50

Используйте глобальный $ pagenow , который является общим глобальным набором WordPress во время выполнения:

  if ($ GLOBALS ['pagenow'] === 'wp-login.php') {
    //Мы на странице входа!
}
 

Вы также можете проверить тип страницы входа, например, регистрация:

  if ($ GLOBALS ['pagenow'] === 'wp-login.php' & amp; & amp;! empty ($ _REQUEST ['action']) & amp; & amp; $ _REQUEST ['action' ] === 'register') {
    //Мы регистрируемся
}
 

Следующий код считается устаревшим и не должен использоваться ( wp-register.php был устаревшим и впоследствии удалялся некоторое время назад):

  if (in_array ($ GLOBALS ['pagenow'], массив ('wp-login.php', 'wp-register.php')))
    run_my_funky_plugin ();
 

ответил TheDeadMedic 24 MaramThu, 24 Mar 2011 00:59:58 +03002011-03-24T00:59:58+03:0012 2011, 00:59:58
8

ТОЛЬКО НАДЕЖНЫЙ ПУТЬ:

  if (is_wplogin ()) {
   ...
}
 

код:

  function is_wplogin () {
    $ ABSPATH_MY = str_replace (массив ('\\', '/'), DIRECTORY_SEPARATOR, ABSPATH);
    return ((in_array ($ ABSPATH_MY.'wp-login.php), get_included_files ()) || in_array ($ ABSPATH_MY.'wp-register.php, get_included_files ())) || $ GLOBALS ['pagenow'] = == 'wp-login.php' || $ _SERVER ['PHP_SELF'] == '/wp-login.php');
}
 

Почему это безопаснее?

1) Иногда, если вы пытаетесь проверить страницу входа в систему с помощью REQUEST_URI (или SCRIPT_PATH ), вы получите НЕПРАВИЛЬНЫЕ ЗНАЧЕНИЯ, так как многие плагины меняют LOGIN & amp ; ADMIN .
2) $ pagenow также даст вам неправильное значение в этом случае!

ответил T.Todua 27 PM000000120000000931 2016, 12:13:09
3

$ GLOBALS ['pagenow'] не работает, используйте $ _ SERVER ['PHP_SELF'] .

  if (in_array ($ _SERVER ['PHP_SELF'], массив ('/wp-login.php', '/wp-register.php'))) {
    //сделай что-нибудь.
}
 

, и если ваш wordpress не установлен в корневой папке веб, вы должны использовать некоторые параметры, такие как YOUR_WP_PATH /wp-login.php , чтобы заменить элементы в массиве.

ответил dallaslu 25 22014vEurope/Moscow11bEurope/MoscowTue, 25 Nov 2014 11:21:54 +0300 2014, 11:21:54
1

Более современный способ сделать это должен работать, даже если URL-адрес wp-login изменяется плагинами и когда WP находится в подпапке и т. д .:

  if (stripos ($ _ SERVER ["SCRIPT_NAME"], strrchr (wp_login_url (), '/'))! == false) {
    /* ... * /
}
 
ответил Firsh 1 Mayam16 2016, 01:11:06
0

Меня интересует только страница регистрации, а не на странице входа. Таким образом, это может не понравиться всем.

$ GLOBALS ['pagenow'] возвращает index.php для меня. Возможно, из-за приятеля или моей темы.

Итак, я использовал

  is_page ( 'регистрация')
 

Если вы проверяете тело страницы регистрации, у него также есть идентификатор, поэтому, если он говорит page-id-4906 , вы можете использовать его таким образом, если он работает лучше:

  is_page ( '4906')
 
ответил zeta 16 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 16 Sep 2015 23:30:44 +0300 2015, 23:30:44
0

Несколько предложенных здесь решений, поэтому я пришел с чем-то действительно простым, который работает на обычном сайте WordPress (не тестируется на Multisite).

Проще, чем:

  if (! isset ($ _ GET ['action'])) {
        echo 'Это страница входа.';
    } else {
        echo 'Это страница регистрации.';
    }
 

Он учитывает параметр url ? action = register , который существует только тогда, когда вы находитесь на странице регистрации.

ответил Adriano Monecchi 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 24 Sep 2016 18:52:11 +0300 2016, 18:52:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132