{"id":2942,"date":"2023-03-21T13:59:01","date_gmt":"2023-03-21T12:59:01","guid":{"rendered":"https:\/\/www.saskialund.de\/?p=2942"},"modified":"2023-11-21T12:24:38","modified_gmt":"2023-11-21T11:24:38","slug":"ecrire-des-fonctions-php-traduisibles-pour-wordpress","status":"publish","type":"post","link":"https:\/\/isla-stud.io\/fr\/ratgeber\/uebersetzbare-php-funktionen-fuer-wordpress-schreiben\/","title":{"rendered":"\u00c9crire des fonctions PHP traduisibles pour WordPress"},"content":{"rendered":"<p>Extrait de la <a href=\"https:\/\/developer.wordpress.org\/apis\/security\/escaping\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Guide du d\u00e9veloppeur WordPress<\/a>:<\/p>\n\n\n\n<p>Sur <em>\u00c9chapper \u00e0 la sortie <\/em>consiste \u00e0 s\u00e9curiser les donn\u00e9es de sortie en supprimant les donn\u00e9es\/caract\u00e8res ind\u00e9sirables, tels que les balises HTML ou de script erron\u00e9es. Ce m\u00e9canisme contribue \u00e0 la s\u00e9curisation des donn\u00e9es avant le rendu \u00e0 l'utilisateur final.<\/p>\n\n\n\n<p>WordPress contient de nombreuses fonctions d'aide que vous pouvez utiliser pour les sc\u00e9narios les plus courants.<\/p>\n\n\n\n<p>Faites bien attention \u00e0 ce que fait chaque fonction, car certaines suppriment le HTML alors que d'autres l'autorisent. Vous devriez utiliser la fonction la plus adapt\u00e9e au contenu et au contexte que vous souhaitez \u00e9diter. La fonction d'\u00e9chappement doit toujours \u00eatre utilis\u00e9e pendant la sortie (php echo), pas avant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Aper\u00e7u des fonctions d'\u00e9chappement<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_attr()<\/code><\/pre>\n\n\n\n<p>Utilis\u00e9 pour tout le reste qui est affich\u00e9 dans l'attribut d'un \u00e9l\u00e9ment HTML. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_html()<\/code><\/pre>\n\n\n\n<p>Utilis\u00e9 chaque fois qu'un \u00e9l\u00e9ment HTML inclut une section de donn\u00e9es \u00e0 afficher (supprim\u00e9 html).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_js()<\/code><\/pre>\n\n\n\n<p>A utiliser pour Inline-Javascript.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_textarea()<\/code><\/pre>\n\n\n\n<p> Pour encoder le texte \u00e0 utiliser dans un \u00e9l\u00e9ment textarea.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_url()<\/code><\/pre>\n\n\n\n<p> Utilisation pour toutes les URL, y compris celles contenues dans les attributs src et href d'un \u00e9l\u00e9ment HTML.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">esc_url_raw()<\/code><\/pre>\n\n\n\n<p>Utilis\u00e9 lorsqu'une URL est enregistr\u00e9e dans la base de donn\u00e9es ou dans d'autres cas o\u00f9 des URL non cod\u00e9es sont n\u00e9cessaires.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses()<\/code><\/pre>\n\n\n\n<p>Utilisation pour tous les \u00e9l\u00e9ments HTML non fiables (texte de contribution, texte de commentaire, etc.)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses_post()<\/code><\/pre>\n\n\n\n<p>Version alternative de wp_kses(), qui autorise automatiquement tout le contenu HTML autoris\u00e9 dans les messages.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"php\" class=\"language-php\">wp_kses_data()<\/code><\/pre>\n\n\n\n<p>Version alternative de wp_kses(), qui n'autorise que le code HTML autoris\u00e9 dans les commentaires de posts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Garantir le multilinguisme lors de l'escapage<\/h2>\n\n\n\n<p>Si la sortie est effectu\u00e9e comme dans l'exemple ci-dessous, nous nous assurons que<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>conserver les phrases (pas de rupture de phrase)<\/li>\n\n\n\n<li>une s\u00e9paration correcte est assur\u00e9e.<\/li>\n\n\n\n<li>la possibilit\u00e9 est offerte de disposer diff\u00e9remment les liens de contact et les liens de messagerie (ou quelque chose de similaire) au sein de la phrase traduite.<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:14px\"><code lang=\"php\" class=\"language-php\">\/\/ Exemple url (pourrait par exemple provenir d&#039;une saisie utilisateur non s&eacute;curis&eacute;e via un formulaire).\n$contact_url = &#039;https:\/\/www.example.com\/contact\/&#039; ;\n\/\/ escaper $contact_url\n$contact_url = esc_url( $contact_url ) ;\n\n\/\/ Exemple d&#039;adresse e-mail (pourrait par exemple provenir d&#039;une saisie utilisateur non s&eacute;curis&eacute;e via un formulaire.)\n$contact_email = &#039;info@mydomain.com&#039; ;\n\/\/ escaping, sanitizing &amp;amp; masquer $contact_email.\n\/\/ Oui, il faut sanitizer et escaper l&#039;adresse e-mail m&ecirc;me si on utilise la fonction antispambot() function\n$contact_email = esc_url( sprintf( &#039;mailto:%s&#039;, antispambot( sanitize_email( $contact_email ) ) ), array( &#039;mailto&#039; ) ) ;\n\nesc_html_e( &#039;Dear guest, we have not found any details regarding your request.&#039;, &#039;text-domain&#039; ) ;\necho &quot;&lt;br&gt;&lt;br&gt;&quot; ;\n\nprintf(\n    esc_html__( &#039;Veuillez nous contacter par le biais de notre %1$s ou via %2$s.&#039;, &#039;text-domain&#039; ),\n    sprintf(\n        &#039;&lt;a href=&quot;\/fr\/s-2\/&quot;&gt;%s&lt;\/a&gt;&#039;,\n        $contact_url,\n        esc_html__( &#039;Page de contact&#039;, &#039;domaine texte&#039; )\n        ),\n    sprintf(\n        &#039;&lt;a href=&quot;\/fr\/s-2\/&quot;&gt;%s&lt;\/a&gt;&#039;,\n        $contact_email,\n        esc_html__( &#039;Email&#039;, &#039;text-domain&#039; )\n        )\n    ) ;<\/code><\/pre>\n\n\n\n<p>Le traducteur dispose ainsi de deux phrases compl\u00e8tes et de deux mots simples \u00e0 traduire. Un traducteur ne doit donc s'occuper que des lignes simples suivantes (tandis que le CODE se charge du reste) :<\/p>\n\n\n\n<pre class=\"wp-block-code\" style=\"font-size:14px\"><code lang=\"php\" class=\"language-php\">esc_html_e( 'Cher visiteur, nous n'avons pas trouv\u00e9 de d\u00e9tails concernant votre demande.', 'text-domain' ) ;\n\/\/ ...\nesc_html__( 'Please contact us through our %1$s or via %2$s', 'text-domain' )\n\/\/ ...\nesc_html__( 'Page de contact', 'text-domain' )\n\/\/ ...\nesc_html__( 'Email', 'text-domain' )<\/code><\/pre>\n\n\n\n<p class=\"has-small-font-size\">Pour plus d'informations, cliquez ici : <a href=\"https:\/\/developer.wordpress.org\/themes\/functionality\/internationalization\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Multilinguisme pour les th\u00e8mes WordPress (eng)<\/a> et <a href=\"https:\/\/developer.wordpress.org\/plugins\/internationalization\/how-to-internationalize-your-plugin\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Multilinguisme pour les plugins (eng)<\/a><\/p>\n\n\n\n<p>Si vous avez des questions, n'h\u00e9sitez pas \u00e0 utiliser la fonction de commentaire en bas de cette page.<\/p>","protected":false},"excerpt":{"rendered":"<p>Vous trouverez ici des snippets PHP utiles pour faire appara\u00eetre des textes traduisibles dans WordPress et pour r\u00e9aliser des th\u00e8mes et des plugins multilingues pour WordPress.<\/p>","protected":false},"author":1,"featured_media":2956,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[13,644,20],"tags":[],"dipi_cpt_category":[],"class_list":["post-2942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ratgeber","category-code-snippets","category-tipps-tricks"],"acf":[],"_links":{"self":[{"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/posts\/2942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/comments?post=2942"}],"version-history":[{"count":2,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/posts\/2942\/revisions"}],"predecessor-version":[{"id":3109,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/posts\/2942\/revisions\/3109"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/media\/2956"}],"wp:attachment":[{"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/media?parent=2942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/categories?post=2942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/tags?post=2942"},{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/isla-stud.io\/fr\/wp-json\/wp\/v2\/dipi_cpt_category?post=2942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}