web-dev-qa-db-fra.com

Dans quelle mesure les normes de codage WordPress pour PHPCS sont-elles flexibles?

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?

2
Cedon

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.

1
Scott Nelle

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.

1
Mark Kaplun