it-swarm.com.de

Was macht extract (shortcode_atts (array (do?

Der Kodex sagt

shortcode_atts()kombiniert Benutzer-Shortcode-Attribute mit bekannten Attributen und füllt bei Bedarf die Standardwerte aus. Das Ergebnis enthält jeden Schlüssel aus den bekannten Attributen, zusammengeführt mit Werten aus Shortcode-Attributen.

Es macht für mich nicht viel Sinn (ich bin ein Neuling).

Hier ist ein Beispiel:

function wps_trend($atts) {
extract( shortcode_atts( array(
'w' => '500', 
'h' => '330',
'q' => '',
'geo' => 'US',
), $atts));
$h = (int) $h;
$w = (int) $w;
$q = esc_attr($geo);
ob_start();  

Kannst du das bitte erklären?

24
mattnewbie

shortcode_atts() funktioniert wie array_merge() : Die zweite Liste der Argumente wird mit der ersten zusammengeführt. Der Unterschied ist: Es werden nur die Schlüssel zusammengeführt, die im ersten Argument ($default) vorhanden sind.

extract() nimmt dann die Array-Schlüssel und setzt diese als Variablennamen und ihre Werte als Variablenwerte. 'w' => '500' wird in Ihrem Beispiel zu $w = '500'.

Verwenden Sie nicht extract(). Dieser sehr schlechte Codestil. Seine Verwendung war selbst im Kern veraltet , und das bedeutet etwas… :)

Ihr Beispiel sollte so geschrieben sein:

$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'] );
31
fuxia