WordPress e Parametri $_GET

19 mar 2012, 20:36:18
Visualizzazioni: 35.9K
Voti: 5

Questo è un problema particolare che non avevo mai incontrato prima con WordPress.

Ho un sito con i permalink abilitati.

L'URL può essere http://mysite.com/page-name/?anyParamName=testing

quando uso print_r($_GET); o echo $_GET["anyParamName"] ottengo rispettivamente un array vuoto o nessun output.

Un file PHP puro funziona correttamente quindi non è un problema del server. WordPress fa qualcosa con il reindirizzamento dei parametri get? Sono davvero perplesso da questo comportamento.

3
Commenti

Dove stai inserendo print_r( $_GET ) ecc.? In un file del tema?

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

L'ho provato in tutto il file template page.php, anche prima dell'header.

wesbos wesbos
19 mar 2012 21:03:09

qualsiasi codice in WordPress potrebbe fare $_GET = []; giusto per divertimento.

Joel M Joel M
21 gen 2020 06:00:36
Tutte le risposte alla domanda 4
3

Per parametri personalizzati dovresti registrarli con WordPress:

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

Quindi il valore di 'anyParamName' può essere trovato con get_query_var

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

questo non dovrebbe avere nulla a che fare con il fatto che $_GET sia vuoto..

Joel M Joel M
21 gen 2020 06:02:39

Vero, ma potrebbe estrarre il valore prima che $_GET venga svuotato da un plug-in/tema (supponendo che sia ciò che sta accadendo).

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

questa risposta è fuorviante e potrebbe far pensare che questo sia il modo in cui i parametri URL dovrebbero funzionare in WordPress, il che non è il caso

Tom J Nowell Tom J Nowell
17 gen 2024 19:53:34
0

Sappi che questa è una vecchia domanda, ma possiamo accedere liberamente a qualsiasi parametro post/get all'interno dell'hook 'init', (prima che WordPress lo modifichi) e questo è documentato qui, guarda:

add_action( 'init', 'process_post' );

function process_post() {
     if( isset( $_POST['unique_hidden_field'] ) ) {
          // elabora qui i dati $_POST, leggi e modifica come desideri
     }
}
24 giu 2019 10:42:18
0

Per poter aggiungere e lavorare con le tue variabili di query personalizzate che aggiungi agli URL (es: "http://example.com/some_page/?my_var=foo" - ad esempio utilizzando add_query_arg()) è necessario aggiungerle alle variabili di query pubbliche disponibili per WP_Query. Queste vengono costruite quando WP_Query viene istanziato, ma fortunatamente vengono passate attraverso un filtro 'query_vars' prima di essere effettivamente utilizzate per popolare la proprietà $query_vars di WP_Query.

Quindi, per esporre la tua nuova variabile di query personalizzata a WP_Query, aggancia il filtro 'query_vars', aggiungi la tua variabile di query all'array $vars che viene passato dal filtro, e ricordati di restituire l'array come output della tua funzione di filtro. Vedi sotto:

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

Per ulteriori dettagli consulta https://codex.wordpress.org/Function_Reference/get_query_var

24 giu 2019 12:56:00
1

Ho avuto lo stesso problema:

  1. la pagina che ho visitato aveva il permalink /focus.
  2. la cartella principale aveva una sottocartella con lo stesso nome (focus).

La pagina corretta veniva caricata (non la cartella), ma i parametri _GET erano vuoti. Ho rinominato la cartella (nel file system) e ora l'array _GET viene popolato come previsto.

19 gen 2020 10:30:08
Commenti

interessante, non ne ero a conoscenza.

Joel M Joel M
21 gen 2020 06:05:34