Dans mon flux de travail WordPress, j'utilise Gulp et une tâche exécute mes fichiers PHP via PHPCS à l'aide des tests de normes de codage WordPress ( https://github.com/WordPress-Coding-Standards/WordPress-Coding -Normes ).
Lors de l'écriture de mon fichier comments.php
, j'ai rencontré l'erreur suivante:
On s'attend à ce que la prochaine étape soit une fonction d'échappement (voir Codex pour "Validation des données"), pas "_x"
Ceci est généré par la ligne de code suivante:
printf( _x( '1 Comment on “%s”', 'Comments Title', 'jldc' ), get_the_title() );
J'ai à peu près réutilisé la même ligne du thème Twenty Sixteen fourni avec WordPress. Par curiosité, j'ai utilisé PHPCS contre le fichier comments.php
de Twenty Sixteen et j'ai eu les mêmes erreurs.
Maintenant, je peux facilement utiliser esc_html_x()
au lieu de _x
car je suppose que c’est ce que les directives me demandent d’utiliser. Mais qu'en est-il de cette ligne:
printf(
_nx(
'%1$s Comment on “%2$s”',
'%1$s Comments on “%2$s”',
$comment_count,
'Comments Title',
'theme-text-domain'
),
number_format_i18n( $comment_count ),
get_the_title()
);
Ou puis-je simplement ignorer l'erreur?
Considérons quelque chose comme ce qui suit:
echo esc_html(
sprintf(
_nx(
'%1$s Comment on “%2$s”',
'%1$s Comments on “%2$s”',
$comment_count,
'Comments Title',
'theme-text-domain'
),
number_format_i18n( $comment_count ),
get_the_title()
)
);
Où vous construisez la chaîne entière avec sprintf
et vous échappez.
Les normes de codage indiquent clairement que vous devez toujours échapper la sortie et le plus tard possible. Comme vous l'avez remarqué, cependant, même le thème par défaut ne s'y conforme pas exactement.
WordPress n'a pas de normes de codage applicables. Il existe des normes de base, il existe Wordpress.com VIP, etc. Aucune d'entre elles ne vient directement de Dieu et, puisqu'elles sont basées sur l'idée que vous développez pour PHP 5.2 ils pourraient même ne pas être la meilleure chose à suivre si vous n'avez pas l'obligation explicite de les suivre.
Utilisez-les comme des lignes directrices. Il ne faut pas négliger les gens qui passent beaucoup de temps à réfléchir, mais ne vous sentez pas liés par la situation.
Dans votre exemple spécifique, il s'agit d'un bogue dans le thème 2016, car il est essentiel que les traductions n'échappent pas et que l'échappement se fasse après la traduction (la traduction peut introduire des éléments tels que des guillemets). Gardez cela à l'esprit et suivez le même chemin, à moins que vous ne vouliez rendre la vie des traducteurs plus difficile.