La funzione wp_parse_args() (come molte altre non documentata) elabora una stringa nel formato:
1 | var1=value1&var2=value2...varn=valuen |
Questa è una caratteristica molto diffusa nelle funzioni WordPress ed è utile quando una funzione supporta più paramteri. Come indicato in Argomenti variabili e di default in Javascript, Actionscript e PHP, non sarebbe necessario passare i parametri nella modalità var1=value1&var2=value2...varn=valuen, in quanto PHP è in grado di gestire in tutta tranquillità il passaggio di parametri variabili.
Synopsis
1 2 3 4 5 6 7 8 9 10 11 12 | /** * Merge user defined arguments into defaults array. * * This function is used throughout WordPress to allow for both string or array * to be merged into another array. * * @since 2.2.0 * * @param (string|array) $args Value to merge with $defaults * @param (array) $defaults Array that serves as the defaults. * @return (array) Merged user defined values with defaults. */ |
In realtà il primo parametro può essere anche un oggetto. Nel caso passiamo una stringa con i valori separati da ampersen, viene chiamata la funzione WordPress di più basso livello wp_parse_str()
Esempio
Per chiarirne il funzionamento vediamo un esempio. Immaginiamo di dover scrivere una funzione ( myFunc() ) che supporta tre parametri opzionali: par1, par2 e par3. La dichiarazione sarà ovviamente:
1 | function myFunc( $args ) {} |
Dove è $args sarà la nostra stringa nel formato:
1 | var1=value1&var2=value2...varn=valuen |
Una possibile chiamata potrebbe essere:
1 | myFunc( "par3=ciao&par1=salve" ); |
Ho inserito di proposito i parametri in un ordine qualsiasi, altra caratteristica che rende il tutto versatile. Vediamo come opera quindi wp_parse_args():
1 2 3 4 5 6 7 | function myFunc( $args ) { $new_args = wp_parse_args( $args ); // echo $new_args["par1"]; echo $new_args["par2"]; echo $new_args["par3"]; } |
Chiamando la nostra funzione con myFunc( "par3=ciao&par1=salve" ); scopriremmo che par2 non è impostato! Ed ecco il motivo del secondo parametro della funzione wp_parse_args():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function myFunc( $args ) { $default = array( "par1" => "salve", "par2" => "come", "par3" => "va?" ); // $new_args = wp_parse_args( $args, $default ); // echo $new_args["par1"]; echo $new_args["par2"]; echo $new_args["par3"]; } // myFunc( "par3=stai&par1=tu" ); // avremmo // tu // come // stai |
La comodità di questo approccio è nella possibilità di pre-impostare dei valori di default che vengono utilizzati quando non presenti nella stringa passata come primo parametro.
Perchè usare wp_parse_args()
Tutto questo sarebbe possibile senza utilizzare wp_parse_args() in quanto PHP fornisce già tutte le funzioni per svolgere questo lavoro, vedi ad esempio: parse_str() e array_merge(). Utilizzare wp_parse_args() conviene principalmente per 2 motivi:
- gestisce per noi il passaggio di un oggetto, un array o una stringa
- il suo comportamento è modificabile tramite i filtri di WordPress: vedi apply_filters()








11
[...] la lettura con la fonte di questo articolo: WordPress: wp_parse_args() | Undolog.com Author: [...]
[...] approfondire consulta articolo originale: WordPress: wp_parse_args() | Undolog.com Author: [...]
[...] a come abbiamo visto in WordPress: wp_parse_args() , la gestione degli attributi è davvero semplice e permette di impostare dei valori di default in [...]
update: WordPress ha aggiornato la documentazione di questa funzione.