Ce face extract( shortcode_atts( array( ?
Documentația spune
shortcode_atts()
combină atributele shortcode-ului definite de utilizator cu atributele cunoscute și completează cu valori implicite când este necesar. Rezultatul va conține fiecare cheie din atributele cunoscute, îmbinate cu valorile din atributele shortcode-ului.
Nu are prea mult sens pentru mine (sunt începător).
Iată un exemplu:
function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500', // lățime implicită
'h' => '330', // înălțime implicită
'q' => '', // query gol implicit
'geo' => 'US', // locație geografică implicită
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();
Puteți explica vă rog?

shortcode_atts()
funcționează similar cu array_merge()
: Ea îmbină al doilea set de argumente în primul. Diferența este că îmbină doar cheile prezente în primul argument ($default
).
extract()
apoi preia cheile array-ului, le setează ca nume de variabile și valorile lor ca valori ale variabilelor. 'w' => '500'
din exemplul tău devine $w = '500'
.
Nu utiliza extract()
. Acesta este un stil de codare foarte prost. Utilizarea sa a fost depreciată chiar și în nucleu, iar asta spune multe... :)
Exemplul tău ar trebui scris astfel:
$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()
este de asemenea descurajat de standardele de codare WordPress. Vezi https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#dont-extract

Atenție! Nu folosiți extract() pe date nesigure, cum ar fi input-ul utilizatorului. Este nesigur și poate crea multe conflicte, de asemenea poate suprascrie coduri pe care le-ați avut înainte. Această funcție poate fi folosită doar în părți foarte, foarte, foarte protejate ale codului unde știți exact ce vă așteptați și ce aveți nevoie.
