Qu'est-ce que l'extrait (shortcode_atts (array (do?)?

22

Le codex dit

  

shortcode_atts() combine les attributs de code court utilisateur avec des attributs connus et les remplit défaut si nécessaire. Le résultat contiendra toutes les clés des attributs connus, fusionnées avec les valeurs des attributs de shortcode.

Cela n’a pas beaucoup de sens pour moi (je suis un débutant).

Voici un exemple:

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();  

Pouvez-vous expliquer, s'il vous plaît?

    
posée mattnewbie 15.05.2013 - 21:51

1 réponse

30

shortcode_atts() fonctionne comme array_merge() : il fusionne la deuxième liste de arguments dans le premier. La différence est la suivante: elle fusionne uniquement les clés présentes dans le premier argument ( $default ).

extract() prend ensuite les clés du tableau, les définit comme noms de variable et leurs valeurs comme valeurs variables. 'w' => '500' dans votre exemple devient $w = '500' .

N'utilisez pas extract() . Ce très mauvais style de code. Son utilisation était obsolète, même en version de base , et cela signifie quelque chose…:)

Votre exemple doit être écrit comme suit:

$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'] );
    
réponse donnée fuxia 15.05.2013 - 21:57

Lire d'autres questions sur les étiquettes