Verifique se wp-login é a página atual

Como posso verificar se a página atual é wp-login.php ou wp-signup.php ?

Existem soluções mais elegantes do que usar $_SERVER['REQUEST_URI'] ?

Solutions Collecting From Web of "Verifique se wp-login é a página atual"

Use o $pagenow global, que é um conjunto global comum do WordPress em tempo de execução:

 if ( $GLOBALS['pagenow'] === 'wp-login.php' ) { // We're on the login page! } 

Você também pode verificar o tipo de página de login, por exemplo, registro:

 if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' ) { // We're registering } 

O código seguinte é considerado legado e não deve ser usado ( wp-register.php foi obsoleto e, posteriormente, removido há bastante tempo):

 if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) ) run_my_funky_plugin(); 

A única maneira confiável:

 function Is_Backend_LOGIN(){ $ABSPATH_MY = str_replace(array('\\','/'), 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'); } 

em seguida, execute-o em qualquer lugar:

 if(Is_Backend_LOGIN()){ ... } 

Por que é mais seguro?

1) Às vezes, se você tentar verificar a página de login usando REQUEST_URI (ou SCRIPT_PATH ), você receberá VALORES INCORRECIDOS, porque muitos plugins mudam os URLs LOGIN e ADMIN .
2) $pagenow também lhe dará valor incorreto nesse caso!

$GLOBALS['pagenow'] não funciona, use $_SERVER['PHP_SELF'] .

 if ( in_array( $_SERVER['PHP_SELF'], array( '/wp-login.php', '/wp-register.php' ) ) ){ // do something. } 

e se o seu wordpress não estiver instalado na pasta raiz da web, você deve usar alguns params como YOUR_WP_PATH/wp-login.php para replace os elementos na matriz.

Mais moderno para fazer isso, ele deve funcionar mesmo quando o URL de login do wp é alterado por plugins e quando o WP está em uma subpasta, etc.:

 if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){ /* ... */ } 

Só estou interessado na página de registro, não na página de login. Então, isso pode não ser desejado por todos.

$ GLOBALS [‘pagenow’] retorna index.php para mim. Talvez por causa do buddypress ou do meu tema.

Então usei

 is_page('register') 

Se você inspecionar o corpo da página de registro, ele também tem o ID também, então, se ele disser page-id-4906 , você pode usá-lo dessa maneira se funcionar melhor:

 is_page('4906') 

Algumas soluções propostas aqui funcionaram, então eu vim com algo realmente simples que funciona em um site comum do WordPress (não testado em Multisite).

Tão simples quanto:

  if( !isset($_GET['action']) ){ echo 'This is the Login Page.'; } else { echo 'This is the Register Page.'; } 

Ele leva em consideração o parâmetro url ?action=register , que só existe quando você está na página de registro.