web-dev-qa-db-ja.com

管理上の注意コーディング標準問題

私は今、VIPコーディング標準に関して少し問題を抱えています。次のように管理者通知を印刷しようとしています。

add_action( 'admin_notices', function() {
    $class = 'notice notice-warning is-dismissible';
    $message = __( 'We suggest that you use the <b>API Key file</b> for your API Keys.', 'package-wordpress' );

    print wp_sprintf( '<div class="%s"><p>%s</p></div>', $class, $message );

});

通知を印刷して表示するという点では成功していますが、コード標準チェックを実行すると、エスケープ関数エラーがスローされます。

----------------------------------------------------------------------
FOUND 2 ERRORS AFFECTING 1 LINE
----------------------------------------------------------------------
101 | ERROR | Expected next thing to be an escaping function (see
    |       | Codex for 'Data Validation'), not '$class'
101 | ERROR | Expected next thing to be an escaping function (see
    |       | Codex for 'Data Validation'), not '$message'
----------------------------------------------------------------------

私はこの問題についていくつかの調査をしました、そしてそれを私がスクリーンにそれを印刷するとき本当にHTMLをエスケープすることを望みますが、私がそうするとき、もちろんそれはメッセージの中にHTMLを持つ能力を削除します。まだコーディング標準に合格しながらこれを行うための提案は何ですか?

2
bretterer

これを処理できる1つの方法は、$message変数の値を割り当てるときにwp_sprintfを実行し、次に出力したいときにwp_ksesを使用することです。メッセージの前後にdivタグとparagraphタグを出力することもできます。これにより、この場合はwp_sprintfが不要になります。

add_action( 'admin_notices', function() {
        $message = __( 'We suggest that you use the <b>API Key file</b> for your API Keys.', 'package-wordpress' );
        echo '<div class="notice notice-warning is-dismissible"><p>' . wp_kses( $message, array( 'b' => array() ) ) . '</p></div>';
});

あなたがそれをオリジナルの近くに保ちたいならば、あなたは何かのようなことをすることができます:

add_action( 'admin_notices', function() {
        $class = 'notice notice-warning is-dismissible';
        $message = wp_sprintf( __( '<div class="%s"><p>We suggest that you use the <b>API Key file</b> for your API Keys.</p></div>', 'package-wordpress' ), $class );

        echo wp_kses( $message, array(
            'div' => array( 'class' => array() ),
            'p' => array(),
            'b' => array(),
        ));
});
3
Bjorn