web-dev-qa-db-fra.com

Comment retourner une chaîne qui contient une variable à l'intérieur d'un shortcode?

$output = '<p class="one"><small>'.$newsletter_one. '</small></p>'

Généralement, lorsque nous écrivons des codes courts, nous publions du code HTML comme celui ci-dessus, et au lieu d'utiliser echo, la fonction return.

Comment devrions-nous écrire celui-ci →

<span class="class2" id="class3-<?php echo $random;?>"> </span>

Comme ça →

$output = '<span class="class2" id="class3-.$random."> </span>'

ou cela a-t-il des défauts?

1
The WP Novice

Lorsque vous souhaitez renvoyer des données combinées avec une chaîne, vous pouvez utiliser l'une des méthodes suivantes:

Ouvrez ou fermez la chaîne en utilisant ':

return '<span class="class2" id="class3-' . $random . '"> </span>';

Ou utilisez la double citation:

return "<span class='class2' id='class3-{$random}'> </span>";

Vous pouvez simplement utiliser $random sans les {} accolades, mais sa lecture est plus facile si vous utilisez {}.

Vous pouvez même utiliser des guillemets doubles pour la chaîne interne, mais vous devez les échapper:

return "<span class=\"class2\" id=\"class3-{$random}\"> </span>";

Comme souligné dans les commentaires de @birgire, pour rendre WordPressy plus, nous pouvons également échapper à la variable:

return sprintf( '<span class="class2" id="class3-%s"></span>', esc_attr( $random ) );
4
Jack Johansson

En plus de la réponse de Jack Johansson (je voudrais ajouter un commentaire à cela, mais il me semble que cela doit être plus long que pour poster ma propre réponse!). Je ne pense pas que vous ayez même besoin de guillemets internes. AFAICT (je suis un programmeur relativement récent PHP), vous pouvez simplement écrire

return "<span class='class2' id='class3-{$random}'> </span>";

et cela fonctionnerait aussi bien.

1
Richard Bos