A cosa serve extract( shortcode_atts( array( in WordPress?
Il codex dice
shortcode_atts()
combina gli attributi dello shortcode definiti dall'utente con gli attributi conosciuti e riempie i valori predefiniti quando necessario. Il risultato conterrà ogni chiave dagli attributi conosciuti, unita ai valori degli attributi dello shortcode.
Non mi è molto chiaro (sono alle prime armi).
Ecco un esempio:
function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500', // larghezza predefinita
'h' => '330', // altezza predefinita
'q' => '', // query vuota predefinita
'geo' => 'US', // località geografica predefinita
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();
Potresti spiegare?

shortcode_atts()
funziona come array_merge()
: Unisce il secondo elenco di argomenti nel primo. La differenza è: Unisce solo le chiavi presenti nel primo argomento ($default
).
extract()
quindi prende le chiavi dell'array, le imposta come nomi di variabili e i loro valori come valori delle variabili. 'w' => '500'
nel tuo esempio diventa $w = '500'
.
Non usare extract()
. Questo è uno stile di codice molto pessimo. Il suo utilizzo è stato deprecato persino nel core, e questo significa qualcosa … :)
Il tuo esempio dovrebbe essere scritto come:
$args = shortcode_atts(
array(
'w' => '500',
'h' => '330',
'q' => '',
'geo' => 'US',
),
$atts
);
$w = (int) $args['w'];
$h = (int) $args['h'];
$q = esc_attr( $args['q'] );

extract()
è anche sconsigliata dagli standard di codifica di WP. Vedi https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#dont-extract

Attenzione! Non usare extract() su dati non attendibili, come input utente. È insicuro e puoi creare molti conflitti e sovrascrivere parti di codice esistenti. Può essere usato solo in parti di codice veramente, veramente, veramente protette dove sai esattamente cosa aspettarti e cosa ti serve.
