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>';
}
Comment reproduire "$to"
dans le shortcode?
J'ai essayé ceci →
[link $to= "https://wordpress.stackexchange.com/"]
Mais cela n'a pas fonctionné.
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>';
}