get_query_var vs variables de consulta globales en WordPress

18 abr 2013, 16:44:46
Vistas: 19K
Votos: 3

Tengo variables de consulta definidas en functions.php usando:

add_filter('init', 'add_query_vars');

function add_query_vars() {
    global $wp;
    $wp->add_query_var('profession');
}

Hasta ahora, para recuperar la variable de consulta en las plantillas de página, he estado usando $profession = get_query_var('profession');. Un ejemplo similar $paged = get_query_var('paged'); también se muestra para la variable $paged en la página del Codex para get_query_var(). Sin embargo, hoy aprendí que las variables de consulta son accesibles como variables globales. Todo lo que tengo que hacer es declarar global $profession; y puedo empezar a usar el valor de la variable en cualquier parte de la plantilla. Esto me parece una forma mucho mejor de acceder a las variables de consulta sin la sobrecarga de funciones anidadas de get_query_var().

¿Hay alguna buena razón para usar get_query_var() para obtener las variables de consulta en lugar de acceder a ellas como variables globales? Si no es así, entonces ¿por qué existe get_query_var()?

0
Todas las respuestas a la pregunta 1
2

get_query_var() es un envoltorio para $wp_query->get($var);. Pero el global $wp_query no siempre es idéntico al configurado durante la solicitud. Ese es el problema principal con query_posts().
Y otros plugins también pueden sobrescribir estas variables sin intención. He visto plugins poniendo $i en el espacio global de nombres...

Y los valores de retorno son diferentes:

  • $GLOBALS['missing_var'] es NULL si no existe dicha variable. La comprobación estricta de tipos es: if ( NULL !== $GLOBALS['missing_var'] ).
  • get_query_var('missing_var'); es una cadena vacía si esa variable no existe. La comprobación estricta de tipos es: if ( '' !== get_query_var('missing_var').

Cuando otros programadores tienen que trabajar con tu código, siempre pueden seguir get_query_var() para ver el valor de respaldo. Eso no es posible con variables globales.

Y luego están los planes para reducir la cantidad de variables globales en WordPress. Usa la API (la función) y probablemente estarás seguro. Acceder a variables globales, por otro lado, podría causar problemas.

18 abr 2013 16:55:10
Comentarios

También agregaría que cuando se tiene la opción entre el espacio de nombres global y otra cosa, generalmente es mejor no usar el espacio de nombres global ya que se vuelve confuso y no queda claro de dónde proviene la variable

Tom J Nowell Tom J Nowell
18 abr 2013 17:48:09

Explicación clara y definida. Exactamente lo que estaba buscando. Gracias.

John John
18 abr 2013 23:00:21