je suis un peu confus comment utiliser la fonction d'échappement sur une variable ayant du code HTML. J'ai essayé ceci https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data mais je ne pouvais pas le comprendre. voici mon code:
$output = '<p>';
$output .= '<label for="' . esc_attr( $this->get_field_id( 'title' ) ) . '">Title:</label>';
$output .= '<input type="text" class="widefat" id="' . esc_attr( $this->get_field_id( 'title' ) ) . '" name="' . esc_attr( $this->get_field_name( 'title' ) ) . '" value="' . esc_attr( $title ) . '"';
$output .= '</p>';
echo $output;
Ma question est de savoir comment je peux échapper à $ output sans perdre de code HTML dedans? Je demande parce que je soumets ce code sur Themeforest. d'où j'ai été rejeté plusieurs fois pour ne pas avoir échappé à du code. Alors maintenant, je pense qu'il est préférable d'échapper à ces variables. écrire? Je vous remercie!
Si vous voulez le faire de la "manière WordPress", vous ne stockeriez pas votre code HTML dans une variable temporaire, vous produiriez directement.
?>
<p>
<label for="<?php esc_attr_e( $this->get_field_id( 'title' ) ); ?>"> <?php _e('Title:', 'tex-domain'); ?></label>
<input type="text" class="widefat" id="<?php esc_attr_e( $this->get_field_id( 'title' ) ); ?>" value="<?php esc_attr_e( $title ); ?>" />
</p>
<?php
P.S: Vous voudriez aussi internationaliser vos chaînes de texte.
Vous recherchez wp_kses()
. https://codex.wordpress.org/Function_Reference/wp_kses
Il y a plus de fonctions d'aide telles que wp_kses_post()
et wp_kses_data()
Votre code a l'air et fonctionne bien pour moi. Le code HTML dans value
est préservé.
Ma seule recommandation serait d'envelopper toutes vos chaînes de texte dans __()
ou _e()
afin qu'elles puissent être facilement traduites. C’est un bon argument de vente sur des sites marchands comme ThemeForest, car tout le monde ne veut pas utiliser l’anglais.
$output .= '<label for="' . esc_attr( $tid ) . '">' . __( 'Title:', 'your-text-domain' ) . '</label>';
En savoir plus sur I18n sur le Codex WordPress .
1. S'échapper
Échappement d'attribut <label for="<?php esc_attr( $tid ); ?>">
Échappement HTML <label ..><?php esc_html( 'Text' ); ?></label>
2. Traduction et évasion
Remarque:
textdomain
devrait être votre propre thème/plugin.
1. Echap et traduction Attribut: <label for="<?php esc_attr( $tid ); ?>">
Pas besoin de faire la traduction prête. Si vous avez une chaîne statique avec $tid
, vous devez préparer cette transition, par exemple.
Invalide:
<label for="<?php esc_attr__( $tid, 'textdomain' ) ); ?>">
<label for="<?php printf( esc_attr__( '%s', 'textdomain' ), $tid ); ?>">
Valable:
<label for="<?php printf( esc_attr__( '%s static text', 'textdomain' ), $tid ); ?>">
<label ..><?php esc_html__( 'Text', 'textdomain' ); ?></label>