WordPress y parámetros $_GET

19 mar 2012, 20:36:18
Vistas: 35.9K
Votos: 5

Este es un problema extraño que nunca antes había encontrado con WordPress.

Tengo un sitio con enlaces permanentes habilitados.

La URL puede ser http://mysite.com/page-name/?anyParamName=testing

entonces cuando uso print_r($_GET); o echo $_GET["anyParamName"] obtengo un array vacío o nada respectivamente.

Un archivo PHP puro funciona bien, así que no es un problema del servidor. ¿WordPress hace algo con la reescritura de los parámetros get? Esto realmente me tiene desconcertado.

3
Comentarios

¿Dónde estás colocando print_r( $_GET ) etc? ¿En un archivo de tema?

Boone Gorges Boone Gorges
19 mar 2012 21:01:01

Lo he probado por todo el archivo de plantilla page.php, incluso antes del header.

wesbos wesbos
19 mar 2012 21:03:09

cualquier código en cualquier parte de WordPress podría estar haciendo $_GET = []; solo por diversión.

Joel M Joel M
21 ene 2020 06:00:36
Todas las respuestas a la pregunta 4
3

Para parámetros personalizados debes registrarlos con WordPress:

add_action('init','wpse46108_register_param');
function wpse46108_register_param() { 
    global $wp; 
    $wp->add_query_var('anyParamName'); 
}

Luego el valor de 'anyParamName' puede ser obtenido con get_query_var

$anyParamNameValue = get_query_var('anyParamName');
19 mar 2012 21:07:31
Comentarios

eso no debería tener nada que ver con que $_GET esté vacío...

Joel M Joel M
21 ene 2020 06:02:39

Cierto, pero podría extraer el valor antes de que $_GET sea vaciado por un plugin/tema (asumiendo que eso es lo que está pasando).

Stephen Harris Stephen Harris
24 abr 2020 22:07:37

esta respuesta es engañosa y podría interpretarse como que así es como se supone que funcionan los parámetros de URL en WordPress, lo cual no es el caso

Tom J Nowell Tom J Nowell
17 ene 2024 19:53:34
0

sé que esta es una pregunta antigua, pero podemos acceder libremente a cualquier parámetro post/get dentro del hook 'init', (antes de que WordPress lo cambie) y eso está documentado aquí, mira:

add_action( 'init', 'procesar_post' );

function procesar_post() {
     if( isset( $_POST['campo_oculto_unico'] ) ) {
          // procesa los datos $_POST aquí, léelos y modifícalos como desees
     }
}
24 jun 2019 10:42:18
0

Para poder agregar y trabajar con tus propias variables de consulta personalizadas que añades a las URLs (ej: "http://ejemplo.com/pagina/?mi_variable=foo" - por ejemplo usando add_query_arg()) necesitas agregarlas a las variables de consulta públicas disponibles para WP_Query. Estas se construyen cuando WP_Query se instancia, pero afortunadamente se pasan a través del filtro 'query_vars' antes de que se usen para poblar la propiedad $query_vars de WP_Query.

Así que, para exponer tu nueva variable de consulta personalizada a WP_Query, engancha el filtro 'query_vars', añade tu variable de consulta al array $vars que pasa el filtro, y recuerda devolver el array como salida de tu función de filtro. Mira abajo:

function add_query_vars_filter( $vars ) {
  $vars[] = "mi_variable";
  return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

Para más detalles por favor revisa https://codex.wordpress.org/Function_Reference/get_query_var

24 jun 2019 12:56:00
1

Tuve el mismo problema:

  1. La página a la que accedí tenía el permalink /focus.
  2. La carpeta principal tenía una subcarpeta con el mismo nombre (focus).

Se cargaba la página correcta (no la carpeta), pero los parámetros _GET estaban vacíos. Renombré la carpeta (en el sistema de archivos) y ahora el array _GET se obtiene como se esperaba.

19 ene 2020 10:30:08
Comentarios

interesante, no estaba al tanto de esto.

Joel M Joel M
21 ene 2020 06:05:34