Utilizarea parametrilor din URL pentru afișarea conținutului în pagină

23 aug. 2013, 18:35:59
Vizualizări: 46.6K
Voturi: 10

Aș dori să afișez ceva pe pagina mea în funcție de pagina de unde vine vizitatorul. Pot configura link-ul către acea pagină să fie:

www.example.com/page?parameter=myparameter

Există vreo modalitate prin care pot accesa acel parametru astfel încât să-l pot afișa în pagină, undeva în conținutul meu?

2
Comentarii

Îmi pare rău, înțeleg că răspunsurile sunt exemple, dar consider important de menționat că nu ar trebui folosite așa cum sunt. Datele introduse de utilizator (cum ar fi parametrii din șirul de interogare) nu ar trebui niciodată afișate fără a fi sanitizate pentru a preveni atacurile XSS! Toate răspunsurile de până acum sunt vulnerabile la XSS și ar trebui să includă măcar un avertisment.

kubi kubi
14 aug. 2019 11:43:54

Pentru o metodă SIGURĂ de implementare a acestui lucru, folosește acest plugin - sau parcurge codul plugin-ului pe github.

1NN 1NN
12 oct. 2022 13:15:14
Toate răspunsurile la întrebare 3
1

Conform răspunsului OP în cadrul întrebării lor:

Cu ajutorul vostru și prin căutare pe Google, am creat un shortcode care returnează valoarea oricărui parametru din URL. Iată-l:

//ACESTA ESTE UN SHORTCODE PERSONALIZAT PENTRU AFIȘAREA UNUI PARAMETRU DIN URL
function URLParam( $atts ) {  
    extract( shortcode_atts( array(
        'param' => 'param',
    ), $atts ) );
    return $_GET[$param];  
}
add_shortcode('URLParam', 'URLParam'); 

Folosesc shortcode-ul astfel pentru a obține parametrul trip_type din URL-ul meu:

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

Asta m-a ajutat, mulțumesc! Cum pot obține valori din datele postate prin formular în loc de șirul de interogare?

Amjad Amjad
22 mai 2018 07:04:51
16

Puteți utiliza o sesiune PHP, căutați în obiectul de interogare pentru cerere sau folosiți $_GET cu URL-ul dvs., dar nu este pentru informații sensibile...

Ceva de genul acesta;

Preluați numele călătoriei din URL

$tripname = $_GET['tripname'];

Folosiți-l în titlul dvs.;

if(isset($tripname)) echo '<h1>Planificați-vă călătoria la ' .$tripname. '</h1>';

23 aug. 2013 18:40:21
Comentarii

Mulțumesc! Nu sunt informații sensibile. Cum aș putea face asta?

user3515 user3515
23 aug. 2013 18:41:13

Acest lucru te-ar putea ajuta: http://www.w3schools.com/php/php_get.asp

Dan Dan
23 aug. 2013 18:42:09

Mulțumesc! Pot să pun asta direct pe pagină, sau trebuie să fie într-un fișier de template?

user3515 user3515
23 aug. 2013 18:43:01

Depinde unde ai nevoie de el - dacă apare doar pe o pagină care rulează pe un singur șablon, l-ai pune acolo. De unde provine informația și unde va ajunge?

Dan Dan
23 aug. 2013 18:49:16

Povestea este așa: am multe 'pagini de excursie', fiecare având informații despre o anumită excursie pe care o organizăm. Apoi, ei apasă pe "înregistrare", și sunt duși la o pagină cu un formular de înregistrare (gravity forms). Aș dori ca pagina (sau altfel descrierea din partea de sus a formularului) să spună "Completează acest formular pentru a te înregistra la excursia xxxx".

user3515 user3515
23 aug. 2013 18:55:22

Așa că am adăugat la URL-ul butonului de înregistrare de pe fiecare pagină de excursie, www.website.com/registration?trip=tripname.

user3515 user3515
23 aug. 2013 18:55:49

Am actualizat răspunsul de mai sus, spune-mi ce părere ai.

Dan Dan
23 aug. 2013 19:07:11

Deci unde ar trebui să pun acel cod?

user3515 user3515
23 aug. 2013 19:11:39

Aș mai dori să folosesc aceeași funcționalitate și pe o altă pagină de formular, unde ne solicită să le trimitem un itinerar. Ar funcționa soluția ta? Poate că un shortcode ar fi o idee mai bună??

user3515 user3515
23 aug. 2013 19:16:32

Crearea unui shortcode va necesita mai multă muncă și timp decât acest lucru, așa că depinde de ceea ce dorești să faci în general. Codul pe care l-am menționat ar trebui plasat pe pagina unde se află formularul. Dacă se află pe un șablon specific, cum ar fi page.php, ar trebui să fie plasat acolo.

Dan Dan
23 aug. 2013 19:30:07

Ambele se află pe același șablon, dar doresc să existe text diferit în jurul lor. Se poate face acest lucru fără un shortcode?

user3515 user3515
23 aug. 2013 19:38:47

Sau, știi unde pot găsi un ghid "crearea de shortcode-uri pentru începători" sau ceva similar?

user3515 user3515
23 aug. 2013 19:39:11

Sugerez să petreci ceva timp pe WP Codex și să citești despre shortcode-uri. Există informații utile online. Ai putea comuta între două bucăți de text în același template, dar declarația condițională ar fi altă poveste.

Dan Dan
23 aug. 2013 19:42:55

O să arunc o privire. Ce înțelegi prin "Ai putea comuta între două bucăți de text în același template"?

user3515 user3515
23 aug. 2013 19:46:11

Ai nevoie de o condiție. Verifică declarațiile "if" ;)

Dan Dan
23 aug. 2013 20:04:28

Mulțumesc! Cu ajutorul tău și puțină cercetare pe Google, am reușit să creez un scurtcod de bază care returnează valoarea unui parametru specific. Am actualizat codul mai sus

user3515 user3515
23 aug. 2013 20:09:38
Arată celelalte 11 comentarii
0

Iată o altă metodă excelentă pentru a realiza acest lucru. Aceasta nu va necesita shortcode-uri și va actualiza automat fiecare pagină creată unde parametrul "trip" este prezent!

1) Navigați în folderul temei și deschideți functions.php (sau creați-l dacă nu există)

2) Adăugați următorul cod și salvați:

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

    function my_trip_filter( $content ) {
        if ( isset($_REQUEST['trip']) && is_single() ) {
            $content = "<h1>Completează acest formular pentru a te înregistra la excursia " . $_REQUEST['trip'] . "</h1>" . $content;
        }

        return $content;

    }
?>

Acest cod folosește filtrul the_content pentru a suprascrie de fiecare dată când utilizați funcția the_content() pentru a afișa informațiile blogului. Acesta detectează dacă pagina solicitată este o pagină/postare individuală și nu arhiva. Pot fi adăugate logici suplimentare sau suprascrieri. Asigurați-vă că returnați $content și orice mesaj doriți va fi afișat pe ecran.

Bucurați-vă!

23 aug. 2013 23:26:20