WordPress și Parametrii $_GET

19 mar. 2012, 20:36:18
Vizualizări: 35.9K
Voturi: 5

Aceasta este o problemă neobișnuită pe care nu am mai întâlnit-o până acum cu WordPress.

Am un site cu permalinks activate.

URL-ul poate fi http://mysite.com/page-name/?anyParamName=testing

apoi când folosesc print_r($_GET); sau echo $_GET["anyParamName"] primesc un array gol sau nimic în mod respectiv.

Un fișier PHP simplu funcționează bine, deci nu este o problemă de server. WordPress face ceva cu redirecționarea parametrilor get? Sunt foarte nedumerit de această situație.

3
Comentarii

Unde pui print_r( $_GET ) etc? Într-un fișier de temă?

Boone Gorges Boone Gorges
19 mar. 2012 21:01:01

Am încercat peste tot în fișierul șablon page.php, chiar și înainte de header.

wesbos wesbos
19 mar. 2012 21:03:09

orice cod oriunde în WordPress ar putea face $_GET = []; doar de distracție.

Joel M Joel M
21 ian. 2020 06:00:36
Toate răspunsurile la întrebare 4
3

Pentru parametri personalizați, trebuie să îi înregistrați în WordPress:

add_action('init','wpse46108_register_param');
function wpse46108_register_param() { 
    global $wp; 
    $wp->add_query_var('anyParamName'); 
}

Apoi valoarea parametrului 'anyParamName' poate fi obținută cu funcția get_query_var

$anyParamNameValue = get_query_var('anyParamName');
19 mar. 2012 21:07:31
Comentarii

asta nu ar trebui să aibă nicio legătură cu faptul că $_GET este gol..

Joel M Joel M
21 ian. 2020 06:02:39

Adevărat, dar ar putea extrage valoarea înainte ca $_GET să fie golit de un plugin/temă (presupunând că asta se întâmplă).

Stephen Harris Stephen Harris
24 apr. 2020 22:07:37

acest răspuns este înșelător și ar putea fi interpretat greșit ca și cum acesta ar fi modul în care parametrii URL ar trebui să funcționeze în WordPress, ceea ce nu este cazul

Tom J Nowell Tom J Nowell
17 ian. 2024 19:53:34
0

știu că aceasta este o întrebare veche, dar putem accesa liber orice parametri post/get în interiorul hook-ului 'init', (înainte ca WordPress să le modifice) și asta este documentat aici, uite:

add_action( 'init', 'process_post' );

function process_post() {
     if( isset( $_POST['unique_hidden_field'] ) ) {
          // procesează datele $_POST aici, citește și modifică după cum dorești
     }
}
24 iun. 2019 10:42:18
0

Pentru a putea adăuga și lucra cu propriile variabile personalizate de interogare pe care le atașați la URL-uri (ex: "http://example.com/some_page/?my_var=foo" - de exemplu, folosind add_query_arg()) trebuie să le adăugați la variabilele de interogare publice disponibile pentru WP_Query. Acestea sunt construite atunci când WP_Query este instanțiat, dar din fericire sunt trecute printr-un filtru 'query_vars' înainte de a fi folosite pentru a popula proprietatea $query_vars a WP_Query.

Deci, pentru a expune noua variabilă de interogare personalizată către WP_Query, conectați-vă la filtrul 'query_vars', adăugați variabila de interogare în array-ul $vars care este transmis de filtru și nu uitați să returnați array-ul ca rezultat al funcției de filtrare. Vedeți mai jos:

function add_query_vars_filter( $vars ) {
  $vars[] = "my_var";
  return $vars;
}
add_filter( 'query_vars', 'add_query_vars_filter' );

Pentru detalii suplimentare, vă rugăm să consultați https://codex.wordpress.org/Function_Reference/get_query_var

24 iun. 2019 12:56:00
1

Am avut aceeași problemă:

  1. pagina pe care am accesat-o avea permalink-ul /focus.
  2. folderul principal avea un subfolder cu același nume (focus).

Pagina corectă era încărcată (nu folderul), dar parametrii _GET erau goi. Am redenumit folderul (în sistemul de fișiere) și acum array-ul _GET primește valorile așteptate.

19 ian. 2020 10:30:08
Comentarii

interesant, nu știam acest lucru.

Joel M Joel M
21 ian. 2020 06:05:34