web-dev-qa-db-fra.com

Avis de notification Problème standard de codage

Je rencontre un problème avec les normes de codage VIP. J'essaie d'imprimer un avis d'administrateur comme suit:

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 );

});

Il réussit à imprimer et à afficher la notification; toutefois, lorsque je lance la vérification des normes de code, des erreurs de fonction sont générées.

----------------------------------------------------------------------
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'
----------------------------------------------------------------------

J'ai effectué des recherches sur ce problème et constaté qu'il souhaitait vraiment que j'échappe du code HTML lors de son impression à l'écran. Toutefois, lorsque je le fais, cela supprime bien entendu la possibilité d'avoir du HTML dans le message. Quelles sont les suggestions pour y parvenir tout en respectant les normes de codage?

2
bretterer

Une façon de procéder consiste à utiliser wp_sprintf lors de l’affectation de la valeur de la variable $message, puis à utiliser wp_kses pour la sortie. Vous pouvez également générer les balises div et paragraphe avant et après le message, ce qui éliminerait le besoin de wp_sprintf dans ce cas.

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>';
});

Si vous voulez le garder plus près de l'original, vous pouvez faire quelque chose comme:

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