¿Cómo puedo verificar si la página actual es wp-login.php
o wp-signup.php
?
¿Hay soluciones más elegantes que usar $_SERVER['REQUEST_URI']
?
¿Cómo puedo verificar si la página actual es wp-login.php
o wp-signup.php
?
¿Hay soluciones más elegantes que usar $_SERVER['REQUEST_URI']
?
Utilice el $pagenow
global, que es un conjunto global común de WordPress en el tiempo de ejecución:
if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
// We're on the login page!
}
También puede consultar el tipo de la página de inicio de sesión, por ejemplo, el registro:
if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' ) {
// We're registering
}
El siguiente código se considera heredado y no debe utilizarse ( wp-register.php
está en desuso y, posteriormente, se eliminó hace bastante tiempo):
if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) )
run_my_funky_plugin();
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');
}
1) A veces, si intenta revisar la página de inicio de sesión usando REQUEST_URI
(o SCRIPT_PATH
), obtendrá VALORES INCORRECTOS, porque muchos complementos cambian LOGIN & ADMINISTRADOR urls.
2) $pagenow
te dará un valor incorrecto también en ese caso!
$GLOBALS['pagenow']
no funciona, use $_SERVER['PHP_SELF']
.
if ( in_array( $_SERVER['PHP_SELF'], array( '/wp-login.php', '/wp-register.php' ) ) ){
// do something.
}
y si su wordpress no está instalado en la carpeta raíz web, debe usar algunos parámetros como YOUR_WP_PATH/wp-login.php
para reemplazar los elementos en la matriz.
Una forma más moderna de hacerlo, debería funcionar incluso cuando los complementos cambian la URL de inicio de sesión de wp y cuando WP está en una subcarpeta, etc.:
if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){
/* ... */
}
Sólo estoy interesado en la página de registro, no en la página de inicio de sesión. Así que esto puede no ser deseado por todos.
$ GLOBALS ['pagenow'] devuelve index.php para mí. Tal vez debido a buddypress o mi tema.
Así que utilicé
is_page('register')
Si inspecciona el cuerpo de la página de registro, también tiene el ID, así que si dice page-id-4906 , puede usarlo de esta manera si funciona mejor:
is_page('4906')
Algunas soluciones propuestas aquí funcionaron, así que vine con algo realmente simple que funciona en un sitio ordinario de WordPress (no probado en Multisite).
Tan simple como:
if( !isset($_GET['action']) ){
echo 'This is the Login Page.';
} else {
echo 'This is the Register Page.';
}
Tiene en cuenta el parámetro url ?action=register
, que solo existe cuando estás en la página de registro.
Lea otras preguntas en las etiquetas pages conditional-tags login registration