web-dev-qa-db-fra.com

Qu'est-ce que extraire (shortcode_atts (array (do?

Le codex dit

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

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

S'il vous plaît pouvez-vous expliquer?

24
mattnewbie

shortcode_atts() fonctionne comme array_merge() : Il fusionne la deuxième liste d’arguments dans la première. 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 de variable. 'w' => '500' dans votre exemple devient $w = '500'.

Ne pas utiliser extract(). Ce très mauvais style de code. Son utilisation était obsolète même en core , et ça veut dire quelque chose… :)

Votre exemple devrait être écrit comme:

$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