{"id":231094,"date":"2022-12-14T13:21:00","date_gmt":"2022-12-14T10:21:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231094"},"modified":"2022-12-14T13:21:33","modified_gmt":"2022-12-14T10:21:33","slug":"une-fonction-dassistance-pour-les-avis-dadministration","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/une-fonction-dassistance-pour-les-avis-dadministration\/","title":{"rendered":"Une fonction d&rsquo;assistance pour les avis d&rsquo;administration"},"content":{"rendered":"\n<p>Si vous \u00eates dans le domaine de la cr\u00e9ation de plugins, ou m\u00eame de th\u00e8mes d&rsquo;ailleurs, et que vous int\u00e9grez des pratiques orient\u00e9es objet dans votre travail, vous \u00eates probablement confront\u00e9 \u00e0 une s\u00e9rialisation d&rsquo;un certain type. Et l&rsquo;un des aspects de la s\u00e9rialisation est qu&rsquo;elle n\u00e9cessite un certain type de retour d&rsquo;information pour l&rsquo;utilisateur.<\/p>\n<p>Il peut s&rsquo;agir d&rsquo;un message de r\u00e9ussite, d&rsquo;un message d&rsquo;\u00e9chec ou simplement d&rsquo;un message avertissant l&rsquo;utilisateur qu&rsquo;une erreur s&rsquo;est produite ou que quelque chose doit \u00eatre mis \u00e0 jour.<\/p>\n<p>Quoi qu&rsquo;il en soit, WordPress fournit toutes les installations dont nous avons besoin ; cependant, nous pouvons nous faciliter la t\u00e2che en \u00e9crivant une fonction d&rsquo;assistance pour les avis d&rsquo;administration. C&rsquo;est simple aussi.<\/p>\n<h2>Avis d&rsquo;administration\u00a0: une fonction d&rsquo;assistance<\/h2>\n<p>Lorsqu&rsquo;il s&rsquo;agit de r\u00e9diger des avis d&rsquo;administration, il est important de se familiariser avec <strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/admin_notices\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le crochet appropri\u00e9.<\/a><\/strong><\/p>\n<p>\u00c0 partir de l\u00e0, vous devez \u00e9galement conna\u00eetre les noms de classe suivants\u00a0:<\/p>\n<ul>\n<li>avis-erreur<\/li>\n<li>avis-succ\u00e8s<\/li>\n<li>avis-avertissement<\/li>\n<li>avis-info<\/li>\n<\/ul>\n<p>Avec cela, il est possible d&rsquo;\u00e9crire une fonction d&rsquo;assistance qui utilise le crochet ci-dessus et une <strong><a href=\"https:\/\/php.net\/manual\/en\/functions.anonymous.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fonction anonyme<\/a><\/strong> (ou une <strong><a href=\"https:\/\/php.net\/manual\/en\/class.closure.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fermeture<\/a><\/strong>) pour obtenir exactement ce dont vous avez besoin. Mais notez d&rsquo;abord ce qui suit :<\/p>\n<blockquote>\n<p>Les fonctions anonymes, \u00e9galement appel\u00e9es fermetures, permettent la cr\u00e9ation de fonctions qui n&rsquo;ont pas de nom sp\u00e9cifi\u00e9. Ils sont surtout utiles en tant que valeur des param\u00e8tres de <a href=\"https:\/\/php.net\/manual\/en\/language.pseudo-types.php#language.types.callback\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rappel, mais ils ont de nombreuses autres utilisations.<\/a><\/p>\n<\/blockquote>\n<p>Cela dit, vous devriez avoir tout ce dont vous avez besoin pour \u00e9crire votre assistant et avoir une id\u00e9e du moment o\u00f9 le vider.<\/p>\n<p>Tout d&rsquo;abord, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-00-display-admin-notice-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la fonction d&rsquo;assistance\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\n\/**\n * Provides an easy eay to display an administration notice based on the incoming\n * class and message.\n *\n * @param string $class   the class to add to the notice (warning, error, success)\n * @param string $message the message to display in the administration notice area\n *\/\nprotected function displayAdminNotice($class, $message)\n{\n    add_action(\n        'admin_notices',\n        function() use ($class, $message) {\n            printf(\n                '&lt;div class=\"%1$s\"&gt;&lt;p&gt;%2$s&lt;\/p&gt;&lt;\/div&gt;',\n                esc_attr($class),\n                esc_html($message)\n            );\n        }\n    );\n}<\/code><\/pre>\n<p>Supposons ensuite que la requ\u00eate en cours contient des donn\u00e9es non valides. Pour g\u00e9rer cela, vous utiliseriez l&rsquo;assistant ci-dessus <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-01-admin-notice-error-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">comme suit\u00a0:<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nif (!$this-&gt;hasValidInput()) {\n    $this-&gt;displayAdminNotice(\n        'notice notice-error',\n        'You must specify a valid email address and license key.'\n    );\n}<\/code><\/pre>\n<p>D&rsquo;un autre c\u00f4t\u00e9, disons que <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-02-admin-notice-success-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tout fonctionne bien :<\/a><\/strong><\/p>\n<pre><code>&lt;?php\n\nif (update_option('acme-option', $values)) {\n    $this-&gt;displayAdminNotice(\n      'notice notice-success',\n      'The options were updated successfully!'\n  );\n}<\/code><\/pre>\n<p>Comme vous pouvez le voir, cette fonction utilise des hooks WordPress natifs, des fonctionnalit\u00e9s de PHP, et cr\u00e9e \u00e9galement une m\u00e9thode qui peut \u00eatre <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fr\/ecrire-des-tests-unitaires-avec-phpunit-partie-1-la-configuration\/\" title=\"test\u00e9e \u00e0 l&#039;unit\u00e9\">test\u00e9e \u00e0 l&rsquo;unit\u00e9<\/a><\/strong>, ce qui est important si vous souhaitez \u00e9crire des <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">applications Web testables dans WordPress.<\/a><\/strong><\/p>\n<p>Et m\u00eame si ce n&rsquo;est pas le cas, vous avez un moyen plus simple de garder votre code un peu plus <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SEC<\/a><\/strong> qu&rsquo;il ne l&rsquo;\u00e9tait auparavant.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress fournit toutes les installations dont nous avons besoin ; cependant, nous pouvons vous faciliter la t\u00e2che en \u00e9crivant une fonction d&rsquo;assistance pour les avis d&rsquo;administration. C&rsquo;est simple aussi.<\/p>\n","protected":false},"author":1,"featured_media":236170,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[893,717,862],"tags":[1167],"class_list":["post-231094","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231094","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231094"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231094\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231094"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231094"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231094"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}