2011-03-10 21 views
19

¿Hay una manera mejor que usar la variable global $pagenow para detectar la página actual si es la página de inicio de sesión, como is_admin()?Wordpress - cómo detectar si la página actual es la página de inicio de sesión

if ($pagenow != 'wp-login.php' && !is_admin()) 
{ 
    // Do something 
} 

Hay una variable global $current_screen con un captador get_current_screen() (que declaró en /wp-admin/includes/template.php), pero siempre es igual a NULL

En #15686 (Detect the current page template tag) – WordPress Trac que Sayed se utiliza generalmente $pagenow, pero creo que no es la buena forma de comparar páginas no dinámicas con su nombre de archivo en lugar de su función (como la página de administración)

+0

supongo que no hay una solución mejor que la existente usando '$ pagenow'. Encontré algunas personas que piden implementar la etiqueta condicional 'is_login()' para personalizar la página de inicio de sesión: http://wordpress.org/extend/ideas/topic/custom-login-screen – mems

Respuesta

46

Si bien estoy de acuerdo con otros en la necesidad de un is_login_page función() o algo similar, he encontrado lo que parece ser la mejor respuesta a https://wordpress.stackexchange.com/questions/12863/check-if-were-on-the-wp-login-page, que utilicé para hacer lo siguiente:

<?php 
function is_login_page() { 
    return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php')); 
} 
+0

Gracias. El tema que estoy usando comprobó '! Is_admin()' y lanzó todo el JS/CSS a la página de inicio de sesión. m ( – kleinfreund

+0

JS/CSS debe usar 'wp_enqueue_scripts'' admin_enqueue_scripts' o 'login_enqueue_scripts' – tehlivi

+0

Tenga en cuenta que' wp-register.php' ya no se usa en las versiones actualizadas de WordPress. Vea la respuesta enlazada en wordpress .stackexchange.com – Flimm

0

¿No puedes explicar qué vas a hacer con él? Entonces puedo decir si debe codificar usando los ganchos de WordPress.

o puede utilizar el URI absoluto, simplemente coincidir con wp-login.php

<?php 
$uri = $_SERVER['REQUEST_URI']; 

echo $uri; 

?>

+0

Lo uso para incluir algunos archivos JavaScript en todos página que no son páginas de administrador o de inicio de sesión: – mems

0

en caso que usted quiere ser tan independiente como sea posible sin WP; por ejemplo, en un complemento que mantiene los cambios futuros fuera del alcance. Se puede usar algo como esto:

function is_login_page() { 
    return !strncmp($_SERVER['REQUEST_URI'], '/wp-login.php', strlen('/wp-login.php')); 
} 
5

Si usted es como yo, y en realidad se trató de cancelar el registro/meterse con el jQuery que WordPress carga automáticamente, entonces la respuesta correcta es:

Don 't use wp_print_styles para registrar sus scripts - use wp_enqueue_scripts en su lugar!

Este gancho se ejecutará solamente en el frontend, no en la página de inicio de sesión, así que no hay necesidad de soluciones alternativas.

Nacin está explicando aquí: http://make.wordpress.org/core/2011/12/12/use-wp_enqueue_scripts-not-wp_print_styles-to-enqueue-scripts-and-styles-for-the-frontend/

+0

Parece una respuesta a otra pregunta? –

+0

Tal vez, pero es posible que el solicitante intentara hacer exactamente eso: "detectar si la página actual es la página de inicio de sesión" para evitar conflictos en el inicio de sesión página, causada por JavaScript cargado con 'wp_print_styles'. En lugar de usar 'wp_enqueue_scripts', ya no hay necesidad de reglas adicionales para la página de inicio de sesión. – Manu

+0

PD: el solicitante lo dijo en su respuesta a otro comentario: "Lo uso para incluir algunos archivos JavaScript en todas las páginas que no son de administración o de inicio de sesión". Por lo tanto, mi respuesta es realmente muy válida: es la forma recomendada de WordPress de incluir JavaScript, y hace que su intento de detectar la página de inicio de sesión sea redundante. – Manu

Cuestiones relacionadas