Sélectionner une page

Écrire des fonctions PHP traduisibles pour WordPress

escaping, sanitizing et text-domains > Programmer des thèmes & plugins multilingues !

Vous trouverez ici des snippets PHP utiles pour faire apparaître des textes traduisibles dans WordPress et pour réaliser des thèmes et des plugins multilingues pour WordPress.

Cet article a été mis à jour pour la dernière fois le 21 novembre 2023.

info
Écrit par Saskia Teichmann
le 21 mars 2023
Envoi
Revue des utilisateurs
0 (0 vote)
Commentaires Classement 0 (0 examen)
Code Snippets - PHP - WordPress

Extrait de la Guide du développeur WordPress:

Sur Échapper à la sortie consiste à sécuriser les données de sortie en supprimant les données/caractères indésirables, tels que les balises HTML ou de script erronées. Ce mécanisme contribue à la sécurisation des données avant le rendu à l'utilisateur final.

WordPress contient de nombreuses fonctions d'aide que vous pouvez utiliser pour les scénarios les plus courants.

Faites bien attention à ce que fait chaque fonction, car certaines suppriment le HTML alors que d'autres l'autorisent. Vous devriez utiliser la fonction la plus adaptée au contenu et au contexte que vous souhaitez éditer. La fonction d'échappement doit toujours être utilisée pendant la sortie (php echo), pas avant.

Aperçu des fonctions d'échappement

esc_attr()

Utilisé pour tout le reste qui est affiché dans l'attribut d'un élément HTML.

esc_html()

Utilisé chaque fois qu'un élément HTML inclut une section de données à afficher (supprimé html).

esc_js()

A utiliser pour Inline-Javascript.

esc_textarea()

Pour encoder le texte à utiliser dans un élément textarea.

esc_url()

Utilisation pour toutes les URL, y compris celles contenues dans les attributs src et href d'un élément HTML.

esc_url_raw()

Utilisé lorsqu'une URL est enregistrée dans la base de données ou dans d'autres cas où des URL non codées sont nécessaires.

wp_kses()

Utilisation pour tous les éléments HTML non fiables (texte de contribution, texte de commentaire, etc.)

wp_kses_post()

Version alternative de wp_kses(), qui autorise automatiquement tout le contenu HTML autorisé dans les messages.

wp_kses_data()

Version alternative de wp_kses(), qui n'autorise que le code HTML autorisé dans les commentaires de posts.

Garantir le multilinguisme lors de l'escapage

Si la sortie est effectuée comme dans l'exemple ci-dessous, nous nous assurons que

  1. conserver les phrases (pas de rupture de phrase)
  2. une séparation correcte est assurée.
  3. la possibilité est offerte de disposer différemment les liens de contact et les liens de messagerie (ou quelque chose de similaire) au sein de la phrase traduite.
// Exemple url (pourrait par exemple provenir d'une saisie utilisateur non sécurisée via un formulaire).
$contact_url = 'https://www.example.com/contact/' ;
// escaper $contact_url
$contact_url = esc_url( $contact_url ) ;

// Exemple d'adresse e-mail (pourrait par exemple provenir d'une saisie utilisateur non sécurisée via un formulaire.)
$contact_email = 'info@mydomain.com' ;
// escaping, sanitizing & masquer $contact_email.
// Oui, il faut sanitizer et escaper l'adresse e-mail même si on utilise la fonction antispambot() function
$contact_email = esc_url( sprintf( 'mailto:%s', antispambot( sanitize_email( $contact_email ) ) ), array( 'mailto' ) ) ;

esc_html_e( 'Dear guest, we have not found any details regarding your request.', 'text-domain' ) ;
echo "<br><br>" ;

printf(
    esc_html__( 'Veuillez nous contacter par le biais de notre %1$s ou via %2$s.', 'text-domain' ),
    sprintf(
        '<a href="/fr/%s/">%s</a>',
        $contact_url,
        esc_html__( 'Page de contact', 'domaine texte' )
        ),
    sprintf(
        '<a href="/fr/%s/">%s</a>',
        $contact_email,
        esc_html__( 'Email', 'text-domain' )
        )
    ) ;

Le traducteur dispose ainsi de deux phrases complètes et de deux mots simples à traduire. Un traducteur ne doit donc s'occuper que des lignes simples suivantes (tandis que le CODE se charge du reste) :

esc_html_e( 'Cher visiteur, nous n'avons pas trouvé de détails concernant votre demande.', 'text-domain' ) ;
// ...
esc_html__( 'Please contact us through our %1$s or via %2$s', 'text-domain' )
// ...
esc_html__( 'Page de contact', 'text-domain' )
// ...
esc_html__( 'Email', 'text-domain' )

Pour plus d'informations, cliquez ici : Multilinguisme pour les thèmes WordPress (eng) et Multilinguisme pour les plugins (eng)

Si vous avez des questions, n'hésitez pas à utiliser la fonction de commentaire en bas de cette page.

<span class="castledown-font">Saskia Teichmann</span>

Saskia Teichmann

Une développeuse web WordPress full stack d'Allemagne qui aime réaliser de beaux sites web et des projets web ambitieux.

Dans sa vie privée, Saskia aime faire des randonnées avec sa famille dans les montagnes de Tramuntana à Majorque, se promener dans les jardins de Herrenhäuser à Hanovre ou nager dans la mer.

Faire une demande de projetDistribuer du café

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Envoi