私のWordPressワークフローではGulpを使用し、WordPressのコーディング標準テスト( https://github.com/WordPress-を使用してPHPCSを介してPHPファイルを実行するタスクを使用しています。コーディング規約/ WordPressコーディング規約 ).
私のcomments.php
ファイルを書いている間に、私は次のエラーに遭遇しました:
次に必要なものはエスケープ関数( 'Data Validation'についてはCodexを参照)であり、 '_ x'ではありません。
これは、次のコード行によって生成されています。
printf( _x( '1 Comment on “%s”', 'Comments Title', 'jldc' ), get_the_title() );
私はWordPressに同梱されている二十六十六テーマから同じ行をほとんど再利用しました。好奇心から私は二十六十六のcomments.php
fileに対してPHPCSを実行し、同じエラーを得た。
さて、私は_x
の代わりにesc_html_x()
を簡単に使うことができます。それがガイドラインが私に使用して欲しいものであると私が思うので。しかし、この行はどうでしょうか。
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()
);
それとも私は単にエラーを無視することができますか?
次のようなものを考えてください。
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()
)
);
sprintf
で文字列全体を構築し、それをエスケープする場所。
コーディング標準は、出力を常にエスケープする必要があることを明確にしており、できる限り遅くします。しかし、お気づきのとおり、デフォルトのテーマでさえ、厳密には守られていません。
WordPressには強制力のあるコーディング標準がありません。コアコーディング標準があり、wordpress.com VIPコーディング標準などがあります。それらはどれも直接神から来たものではなく、あなたがPHP 5.2のために開発しているという考えに基づいていますあなたがそれらに従うことを明示的に要求していないのであれば、それらは従うべき最善のものでさえないかもしれません。
ガイドラインとしてそれらを使用してください、人々が考えることに多くの時間を費やすことは無視されるべきではありませんが、それがあなたの特定の状況に合わないときそれらによって縛られていると感じないでください。
あなたの特定の例では、翻訳はエスケープしてはならないというコアガイドラインであり、エスケープは翻訳の後に行われるべきであるので、それは2016テーマのバグです(翻訳は引用符のようなものを導入するかもしれません)。あなたがこれを覚えておいて、あなたが翻訳者の人生をより困難にしたくない限り、あなたは同じ道をたどるべきです。