web-dev-qa-db-fra.com

Démystifier et comprendre la nomenclature des codes courts

Un extrait de code de Tuts Plus →

function link($atts, $content = null) {
    extract(shortcode_atts(array(
        "to" => 'http://net.tutsplus.com'
    ), $atts));
    return '<a href="'.$to.'">'.$content.'</a>';
}

Lien source →

Question →

Comment reproduire "$to" dans le shortcode?

J'ai essayé ceci →

[link $to= "https://wordpress.stackexchange.com/"] Mais cela n'a pas fonctionné.

1
The WP Novice

C'est juste [link to= "https://wordpress.stackexchange.com/"].

Ceci est un exemple classique de la raison pour laquelle extract() est mauvais. Vous ne pouvez pas facilement dire d'où viennent les variables. extract() crée des variables à partir d'un tableau, les clés devenant le nom de la variable. Donc cette partie:

extract(shortcode_atts(array(
    "to" => 'http://net.tutsplus.com'
), $atts));

Crée un tableau avec une clé to, défini sur http://net.tutsplus.com s'il n'est pas défini dans $atts. Ensuite, c'est extract()ed pour que la clé to devienne $to.

Vous devriez éviter d'utiliser extract() et simplement utiliser la variable $atts:

function link($atts, $content = null) {
    $atts = shortcode_atts(array(
        "to" => 'http://net.tutsplus.com'
    ), $atts);
    return '<a href="'.$atts['to'].'">'.$content.'</a>';
}
2
Jacob Peattie