Obtener Parámetros URL desde el referente

4 feb 2013, 14:43:13
Vistas: 20.3K
Votos: 1

No estoy 100% seguro si esto se clasifica como una pregunta de PHP o es específicamente de WordPress...

Estoy implementando la API de Configuración de WordPress con una página de ajustes con pestañas. He añadido un botón 'reiniciar pestaña', pero como la validación se realiza en una página separada (options.php) no puedo determinar en qué pestaña estoy - sin añadir la pestaña como un campo oculto, lo cual quiero evitar.

He encontrado la función wp_get_referer(), pero esta me devuelve la URL completa - no estoy seguro de cómo extraer el tab=tab1 como una variable.

Actualización - Respuesta:

$url = parse_url(wp_get_referer());
parse_str($url['query'], $path);
$tab = $path['tab'];

Como se mencionó en las respuestas, se requiere entonces alguna validación.

2
Comentarios

¿Estás haciendo esto sin Javascript?

s_ha_dum s_ha_dum
4 feb 2013 16:48:09

Sí.

Mi formulario está ubicado en wordpress/wp-admin/options-general.php?page=967slug_settings_page&tab=tab3 (observa el parámetro tab) La API de configuración luego envía el formulario a options.php (núcleo de Wordpress) que luego llama a una función de validación (escrita por mí). Estoy intentando obtener el valor del parámetro tab dentro de la función de validación.

La función de Wordpress wp_get_referer() me da la URL completa (¿URI?) - exactamente como arriba - pero no estoy seguro de cómo extraer el valor de 'tab' de eso.

Jamie Jamie
4 feb 2013 18:41:09
Todas las respuestas a la pregunta 1
2

Si tab=tab está en la URL entonces:

global $_GET;
var_dump($_GET); // solo para depuración; Deberías poder ver lo que necesitas.

Eso es PHP puro. Si realmente necesitas procesar esa cadena (no sé por qué lo harías) usa parse_url y luego usa parse_str en la parte query de la misma.

$path = parse_url($url);
$path = parse_str($path, $output);
var_dump($output); // nuevamente, solo para depuración

Para ser completo, por favor no uses ninguno de esos valores sin validarlos.

¿Te entendí mal?

4 feb 2013 18:59:56
Comentarios

Desafortunadamente, no puedo usar $_GET ya que la URL de la que intento obtener el parámetro es el referente, no la URL actual.

Sin embargo, dado que puedo acceder al referente a través de la función wp_get_referer, creo que puedo armar algo que use parse_url y parse_str para obtener el parámetro de la pestaña.

Gracias por la ayuda

Jamie Jamie
4 feb 2013 19:23:32

Solo para cerrar esto correctamente, he estado experimentando con tus sugerencias para obtener una respuesta, que he agregado a mi pregunta original.

@s_ha_dum - gracias por la ayuda.

Jamie Jamie
5 feb 2013 14:27:11