Verifique se wp-login é a página atual

37

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'] ?

    
por onetrickpony 23.03.2011 / 22:25
fonte

6 respostas

50

Use o global $pagenow , 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 da 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 a seguir é considerado legado e não deve ser usado ( wp-register.php foi preterido e, posteriormente, removido há algum tempo):

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

    
por TheDeadMedic 23.03.2011 / 22:59
fonte
10

A ÚNICA MANEIRA CONFIÁVEL:

if( is_wplogin() ){
   ...
}

código:

function is_wplogin(){
    $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()) ) || (isset($_GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') || $_SERVER['PHP_SELF']== '/wp-login.php');
}

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 INCORRETOS, porque muitos plugins mudam LOGIN & ADMIN urls.
2) $pagenow lhe dará valor incorreto também nesse caso!

Notas:

  • Em alguns casos, pode não funcionar se você enviar o formulário de login manualmente (ou seja, com shortcode ou etc) manualmente em outros arquivos / páginas de modelo.
por T.Todua 27.08.2016 / 11:13
fonte
3

$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 parâmetros como YOUR_WP_PATH/wp-login.php para substituir os elementos na matriz.

    
por dallaslu 25.11.2014 / 09:21
fonte
1

Uma maneira mais moderna de fazer isso, deve funcionar mesmo quando o URL wp-login for alterado por plugins e quando o WP estiver em uma subpasta, etc:

if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){
    /* ... */
}
    
por Firsh - letsWP.io 01.05.2016 / 00:11
fonte
0

Estou interessado apenas 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 eu usei

is_page('register')

Se você inspecionar o corpo da página de registro, ele também tem o ID, então se ele diz page-id-4906 , você pode usá-lo desta forma se ele funciona melhor:

is_page('4906')
    
por zeta 16.09.2015 / 22:30
fonte
0

Algumas soluções aqui propostas funcionaram, então eu vim com algo muito simples que funciona em um site comum do WordPress (não testado no 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 conta o parâmetro de URL ?action=register , que só existe quando você está na página de registro.

    
por Adriano Monecchi 24.09.2016 / 17:52
fonte