Utilizzare i parametri query string nell'URL per visualizzare contenuti nella pagina

23 ago 2013, 18:35:59
Visualizzazioni: 46.6K
Voti: 10

Vorrei mostrare qualcosa nella mia pagina in base alla pagina da cui proviene l'utente. Posso impostare il link a quella pagina come:

www.example.com/page?parameter=myparameter

C'è un modo per accedere a quel parametro in modo da poterlo mostrare nella pagina, da qualche parte nel mio contenuto?

2
Commenti

Mi dispiace, capisco che le risposte sono esempi, ma trovo importante sottolineare che non dovrebbero essere utilizzate così come sono. L'input dell'utente (come i parametri della stringa di query) non dovrebbe mai essere visualizzato senza sanificazione per prevenire attacchi XSS! Tutte le risposte finora sono vulnerabili a XSS e dovrebbero almeno includere un avviso.

kubi kubi
14 ago 2019 11:43:54

Per un modo SICURO per implementare questo, usa questo plugin - oppure sfoglia il codice del plugin su github.

1NN 1NN
12 ott 2022 13:15:14
Tutte le risposte alla domanda 3
1

In base alla risposta dell'OP all'interno della sua domanda:

Con il tuo aiuto e un po' di ricerche su Google, ho messo insieme uno shortcode che restituisce il valore di qualsiasi parametro dell'URL. Eccolo:

//QUESTO È UNO SHORTCODE PERSONALIZZATO PER VISUALIZZARE UN PARAMETRO DALL'URL
function URLParam( $atts ) {  
    extract( shortcode_atts( array(
        'param' => 'param',
    ), $atts ) );
    return $_GET[$param];  
}
add_shortcode('URLParam', 'URLParam'); 

Utilizzo lo shortcode in questo modo per ottenere il trip_type dal mio URL:

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

Questo mi è stato utile, grazie! Come posso ottenere i valori dai dati del form post invece che dalla query string?

Amjad Amjad
22 mag 2018 07:04:51
16

Potresti utilizzare una sessione PHP, cercare la richiesta nell'oggetto query oppure usare $_GET con il tuo URL, ma non è adatto per informazioni sensibili...

Qualcosa come questo:

Prendi il nome del viaggio dall'URL

$tripname = $_GET['tripname'];

Usalo nel tuo titolo:

if(isset($tripname)) echo '<h1>Pianifica il Tuo Viaggio a ' .$tripname. '</h1>';

23 ago 2013 18:40:21
Commenti

Grazie! Queste non sono informazioni sensibili. Come potrei procedere per farlo?

user3515 user3515
23 ago 2013 18:41:13

Questo potrebbe aiutarti: http://www.w3schools.com/php/php_get.asp

Dan Dan
23 ago 2013 18:42:09

Grazie! Posso inserirlo direttamente nella pagina, o deve essere inserito in un file template?

user3515 user3515
23 ago 2013 18:43:01

Dipende da dove ti serve - se viene visualizzato solo su una pagina che utilizza un singolo template, lo inseriresti lì. Da dove provengono le informazioni e dove andranno a finire?

Dan Dan
23 ago 2013 18:49:16

La situazione è questa: ho molte 'pagine viaggio', ognuna delle quali contiene informazioni su un determinato viaggio che organizziamo. Poi, cliccando su "registrati", vengono indirizzati a una pagina con un modulo di registrazione (gravity forms). Vorrei che la pagina (o in alternativa la descrizione in cima al modulo) dicesse "Compila questo modulo per registrarti al viaggio xxxx".

user3515 user3515
23 ago 2013 18:55:22

Quindi ho aggiunto all'URL del pulsante di registrazione su ogni pagina viaggio, www.website.com/registration?trip=tripname.

user3515 user3515
23 ago 2013 18:55:49

Ho aggiornato la risposta sopra, fammi sapere cosa ne pensi.

Dan Dan
23 ago 2013 19:07:11

Quindi dove dovrei inserire quel codice?

user3515 user3515
23 ago 2013 19:11:39

Vorrei anche utilizzare la stessa funzionalità su un'altra pagina del modulo, dove richiedono che inviamo loro un itinerario. La tua soluzione funzionerebbe? Forse uno shortcode sarebbe una migliore idea??

user3515 user3515
23 ago 2013 19:16:32

Creare un shortcode richiederà più lavoro e tempo rispetto a questo, quindi dipende da cosa vuoi fare complessivamente. Il codice che ho menzionato andrebbe nella pagina dove si trova il modulo. Se sono su un template specifico, come page.php, andrebbe lì.

Dan Dan
23 ago 2013 19:30:07

Sono entrambi sullo stesso template, ma voglio che ci sia testo diverso intorno. Si può fare senza un shortcode?

user3515 user3515
23 ago 2013 19:38:47

Oppure, sai dove posso trovare qualcosa tipo "creare shortcode per principianti" o qualcosa del genere?

user3515 user3515
23 ago 2013 19:39:11

Ti consiglio di dedicare un po' di tempo al WP Codex e di leggere riguardo agli shortcode. Ci sono alcune risorse interessanti online. Potresti alternare tra due porzioni di testo nello stesso template, ma l'istruzione condizionale sarebbe un'altra questione.

Dan Dan
23 ago 2013 19:42:55

Darò un'occhiata. Cosa intendi con "Potresti alternare tra due porzioni di testo nello stesso template"?

user3515 user3515
23 ago 2013 19:46:11

Avresti bisogno di una condizione. Dai un'occhiata alle istruzioni "if" ;)

Dan Dan
23 ago 2013 20:04:28

Grazie! Con il tuo aiuto e un po' di ricerche su Google, ho messo insieme uno shortcode di base che restituisce il valore di un parametro specifico. Codice aggiornato sopra

user3515 user3515
23 ago 2013 20:09:38
Mostra i restanti 11 commenti
0

Ecco un altro ottimo modo per ottenere questo risultato. Questo metodo non richiede shortcode e aggiornerà automaticamente ogni pagina creata dove è presente il parametro "trip"!

1) Naviga nella cartella del tuo tema e apri functions.php (o crealo se non esiste)

2) Aggiungi il seguente codice e salva:

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

    function my_trip_filter( $content ) {
        if ( isset($_REQUEST['trip']) && is_single() ) {
            $content = "<h1>Compila questo modulo per registrarti al viaggio " . $_REQUEST['trip'] . "</h1>" . $content;
        }

        return $content;

    }
?>

Questo codice utilizza il filtro the_content per sovrascrivere ogni volta che usi la funzione the_content() per stampare le informazioni del tuo blog. Rileva se la pagina richiesta è una singola pagina/articolo e non l'archivio. È possibile aggiungere ulteriore logica o sovrascritture. Assicurati solo di restituire $content e qualunque messaggio desideri verrà visualizzato sullo schermo.

Buon lavoro!

23 ago 2013 23:26:20