Ce face extract( shortcode_atts( array( ?

15 mai 2013, 22:51:36
Vizualizări: 47.9K
Voturi: 35

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?

0
Toate răspunsurile la întrebare 1
3
44

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'] );
15 mai 2013 22:57:15
Comentarii

Mulțumesc. Nu știam despre extract, deci îți mulțumesc și pentru asta!

User User
15 mai 2013 23:07:27

extract() este de asemenea descurajat de standardele de codare WordPress. Vezi https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/#dont-extract

alexg alexg
17 feb. 2016 11:38:02

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.

Ivijan Stefan Stipić Ivijan Stefan Stipić
13 apr. 2017 18:02:16