Utilizzare i parametri query string nell'URL per visualizzare contenuti nella pagina
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?
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']
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>';
Grazie! Queste non sono informazioni sensibili. Come potrei procedere per farlo?
user3515
Questo potrebbe aiutarti: http://www.w3schools.com/php/php_get.asp
Dan
Grazie! Posso inserirlo direttamente nella pagina, o deve essere inserito in un file template?
user3515
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
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
Quindi ho aggiunto all'URL del pulsante di registrazione su ogni pagina viaggio, www.website.com/registration?trip=tripname.
user3515
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
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
Sono entrambi sullo stesso template, ma voglio che ci sia testo diverso intorno. Si può fare senza un shortcode?
user3515
Oppure, sai dove posso trovare qualcosa tipo "creare shortcode per principianti" o qualcosa del genere?
user3515
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
Darò un'occhiata. Cosa intendi con "Potresti alternare tra due porzioni di testo nello stesso template"?
user3515
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!