usar cadena de consulta en URL para mostrar contenido en la página

23 ago 2013, 18:35:59
Vistas: 46.6K
Votos: 10

Me gustaría mostrar algo en mi página basado en desde qué página llegó la persona. Puedo configurar el enlace a esa página para que sea:

www.example.com/page?parameter=myparameter

¿Hay alguna forma de acceder a ese parámetro para que pueda mostrarlo en la página, en algún lugar de mi contenido?

2
Comentarios

Lamento entender que las respuestas son ejemplos, pero considero importante señalar que no deben usarse tal cual. ¡La entrada del usuario (como los parámetros de la cadena de consulta) nunca debe mostrarse sin saneamiento para evitar ataques XSS! Todas las respuestas hasta ahora son vulnerables a XSS y al menos deberían incluir una advertencia.

kubi kubi
14 ago 2019 11:43:54

Para una forma SEGURA de implementar esto, usa este plugin - o explora el código del plugin en github.

1NN 1NN
12 oct 2022 13:15:14
Todas las respuestas a la pregunta 3
1

Según la respuesta del OP dentro de su pregunta:

Con tu ayuda y algo de búsqueda en Google, armé un shortcode que devuelve el valor de cualquier parámetro de la URL. Aquí está:

//ESTE ES UN SHORTCODE PERSONALIZADO PARA MOSTRAR UN PARÁMETRO DE LA URL
function URLParam( $atts ) {  
    extract( shortcode_atts( array(
        'param' => 'param',
    ), $atts ) );
    return $_GET[$param];  
}
add_shortcode('URLParam', 'URLParam'); 

Uso el shortcode así para obtener el trip_type de mi URL:

[URLParam param='trip_type']
9 nov 2016 21:03:20
Comentarios

Esto me ayudó, ¡gracias! ¿Cómo puedo obtener valores de los datos POST del formulario en lugar de la cadena de consulta?

Amjad Amjad
22 may 2018 07:04:51
16

Podrías usar una sesión de PHP, buscar en el objeto de consulta la solicitud, o usar $_GET con tu URL, pero no es para información sensible...

Algo como esto:

Obtener el nombre del viaje desde la URL

$tripname = $_GET['tripname'];

Usarlo en tu encabezado:

if(isset($tripname)) echo '<h1>Planifica tu viaje a ' .$tripname. '</h1>';

23 ago 2013 18:40:21
Comentarios

¡Gracias! Esto no es información sensible. ¿Cómo podría hacer eso?

user3515 user3515
23 ago 2013 18:41:13

Esto podría ayudarte: http://www.w3schools.com/php/php_get.asp

Dan Dan
23 ago 2013 18:42:09

¡Gracias! ¿Puedo poner eso directamente en la página, o necesita ir en un archivo de plantilla?

user3515 user3515
23 ago 2013 18:43:01

Depende de dónde lo necesites - si solo aparece en una página que usa una plantilla específica, lo pondrías allí. ¿De dónde viene la información y dónde terminará?

Dan Dan
23 ago 2013 18:49:16

La situación es la siguiente: tengo muchas 'páginas de viaje', cada una con información sobre un viaje específico que ofrecemos. Luego, hacen clic en "registrarse" y los lleva a una página con un formulario de registro (gravity forms). Me gustaría que la página (o en su caso la descripción en la parte superior del formulario) diga "Complete este formulario para registrarse en el viaje xxxx".

user3515 user3515
23 ago 2013 18:55:22

Así que agregué a la URL del botón de registro en cada página de viaje: www.website.com/registro?viaje=nombredeviaje.

user3515 user3515
23 ago 2013 18:55:49

Actualicé la respuesta anterior, dime qué opinas.

Dan Dan
23 ago 2013 19:07:11

Entonces, ¿dónde pondría ese código?

user3515 user3515
23 ago 2013 19:11:39

También me gustaría usar la misma funcionalidad en otra página de formulario, donde solicitan que les enviemos un itinerario. ¿Funcionaría tu solución? ¿Quizás un shortcode sería una mejor idea?

user3515 user3515
23 ago 2013 19:16:32

Crear un shortcode requerirá más trabajo y tiempo que esto, así que depende de lo que quieras hacer en general. El código que mencioné iría en la página donde está el formulario. Si están en una plantilla particular, como page.php, iría allí.

Dan Dan
23 ago 2013 19:30:07

Ambos están en la misma plantilla, pero quiero que haya texto diferente alrededor. ¿Se puede hacer eso sin un shortcode?

user3515 user3515
23 ago 2013 19:38:47

O, ¿sabes dónde puedo encontrar "creación de shortcodes para principiantes" o algo por el estilo?

user3515 user3515
23 ago 2013 19:39:11

Sugiero dedicar algo de tiempo al WP Codex y leer sobre shortcodes. Hay información muy buena en línea. Podrías alternar entre dos fragmentos de texto en la misma plantilla, pero la sentencia condicional sería otro asunto.

Dan Dan
23 ago 2013 19:42:55

Lo revisaré. ¿Qué quieres decir con "Podrías alternar entre dos fragmentos de texto en la misma plantilla"?

user3515 user3515
23 ago 2013 19:46:11

Necesitarías una condición. Echa un vistazo a las sentencias "if" ;)

Dan Dan
23 ago 2013 20:04:28

¡Gracias! Con tu ayuda y un poco de búsqueda en Google, armé un shortcode básico que devolverá el valor de un parámetro específico. Código actualizado arriba

user3515 user3515
23 ago 2013 20:09:38
Mostrar los 11 comentarios restantes
0

Aquí hay otra excelente manera de lograrlo. Esto no requerirá shortcodes y se actualizará automáticamente en cada página que crees donde esté presente el parámetro "trip".

1) Navega a la carpeta de tu tema y abre functions.php (o créalo si no existe)

2) Agrega el siguiente código y guarda:

<?php 
    add_filter( 'the_content', 'my_trip_filter' );

    function my_trip_filter( $content ) {
        if ( isset($_REQUEST['trip']) && is_single() ) {
            $content = "<h1>Completa este formulario para registrarte en el viaje " . $_REQUEST['trip'] . "</h1>" . $content;
        }

        return $content;

    }
?>

Este código utiliza el filtro the_content para sobrescribir cada vez que uses la función the_content() para imprimir la información de tu blog. Detecta si la página solicitada es una página individual/entrada y no el archivo. Se puede añadir lógica adicional o sobrescrituras. Solo asegúrate de devolver $content y cualquier mensaje que desees será mostrado en pantalla.

¡Disfrútalo!

23 ago 2013 23:26:20