{"id":230600,"date":"2022-12-14T13:27:00","date_gmt":"2022-12-14T10:27:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230600"},"modified":"2022-12-14T13:28:26","modified_gmt":"2022-12-14T10:28:26","slug":"en-hjaelpfunktion-foer-adminmeddelanden","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/en-hjaelpfunktion-foer-adminmeddelanden\/","title":{"rendered":"En hj\u00e4lpfunktion f\u00f6r adminmeddelanden"},"content":{"rendered":"\n<p>Om du sysslar med att bygga plugins, eller till och med teman f\u00f6r den delen, och inf\u00f6rlivar objektorienterad praxis i ditt arbete s\u00e5 st\u00e5r du troligen inf\u00f6r serialisering av n\u00e5gon typ. Och en av aspekterna av serialisering att det kr\u00e4ver n\u00e5gon typ av feedback f\u00f6r anv\u00e4ndaren.<\/p>\n<p>Detta kan vara ett framg\u00e5ngsmeddelande, ett misslyckandemeddelande eller ett meddelande som helt enkelt varnar anv\u00e4ndaren om att n\u00e5got gick fel eller att n\u00e5got kanske borde uppdateras.<\/p>\n<p>Hur som helst, WordPress tillhandah\u00e5ller alla faciliteter som vi beh\u00f6ver; vi kan dock g\u00f6ra det \u00e4nnu enklare f\u00f6r oss sj\u00e4lva genom att skriva en hj\u00e4lpfunktion f\u00f6r adminmeddelanden. Det \u00e4r enkelt ocks\u00e5.<\/p>\n<h2>Adminmeddelanden: En hj\u00e4lpfunktion<\/h2>\n<p>N\u00e4r det kommer till att skriva adminmeddelanden \u00e4r det viktigt att bekanta sig med <strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/admin_notices\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4mplig hook.<\/a><\/strong><\/p>\n<p>D\u00e4rifr\u00e5n m\u00e5ste du ocks\u00e5 k\u00e4nna till f\u00f6ljande klassnamn:<\/p>\n<ul>\n<li>meddelande-fel<\/li>\n<li>varsel-framg\u00e5ng<\/li>\n<li>varsel-varning<\/li>\n<li>meddelande-info<\/li>\n<\/ul>\n<p>Med det \u00e4r det m\u00f6jligt att skriva en hj\u00e4lpfunktion som anv\u00e4nder ovanst\u00e5ende krok och en <strong><a href=\"https:\/\/php.net\/manual\/en\/functions.anonymous.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">anonym funktion<\/a><\/strong> (eller en <strong><a href=\"https:\/\/php.net\/manual\/en\/class.closure.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">st\u00e4ngning<\/a><\/strong>) f\u00f6r att uppn\u00e5 exakt vad du beh\u00f6ver. Men observera f\u00f6rst f\u00f6ljande:<\/p>\n<blockquote>\n<p>Anonyma funktioner, \u00e4ven k\u00e4nda som st\u00e4ngningar, till\u00e5ter skapandet av funktioner som inte har n\u00e5got specificerat namn. De \u00e4r mest anv\u00e4ndbara som v\u00e4rdet av <a href=\"https:\/\/php.net\/manual\/en\/language.pseudo-types.php#language.types.callback\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e5teruppringningsparametrar<\/a>, men de har m\u00e5nga andra anv\u00e4ndningsomr\u00e5den.<\/p>\n<\/blockquote>\n<p>Med det sagt b\u00f6r du ha allt du beh\u00f6ver f\u00f6r att skriva till din hj\u00e4lpare och ha en id\u00e9 om n\u00e4r du ska t\u00f6mma den.<\/p>\n<p>F\u00f6rst, <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-00-display-admin-notice-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hj\u00e4lpfunktionen:<\/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>L\u00e5t oss sedan s\u00e4ga att beg\u00e4ran som g\u00f6rs inneh\u00e5ller ogiltiga data. F\u00f6r att hantera detta, skulle du anv\u00e4nda ovanst\u00e5ende hj\u00e4lpare <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-01-admin-notice-error-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">som f\u00f6ljande:<\/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>\u00c5 andra sidan, l\u00e5t oss s\u00e4ga att <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-02-admin-notice-success-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">allt fungerar bra:<\/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>Som du kan se anv\u00e4nder den h\u00e4r funktionen inbyggda WordPress-hooks, faciliteter f\u00f6r PHP, och skapar \u00e4ven en metod som kan <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/skriva-enhetstester-med-phpunit-del-1-installationen\/\" title=\"enhetstestades\">enhetstestades<\/a><\/strong> vilket spelar roll om du siktar p\u00e5 att skriva testbara <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">webbapplikationer i WordPress.<\/a><\/strong><\/p>\n<p>Och \u00e4ven om inte, har du ett enklare s\u00e4tt att h\u00e5lla din kod lite mer <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">DRY<\/a><\/strong> \u00e4n den var tidigare.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <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 tillhandah\u00e5ller alla faciliteter vi beh\u00f6ver; vi kan dock g\u00f6ra det enklare genom att skriva en hj\u00e4lpfunktion f\u00f6r adminmeddelanden. Det \u00e4r enkelt ocks\u00e5.<\/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":[901,724,868],"tags":[1173],"class_list":["post-230600","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230600","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=230600"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230600\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230600"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230600"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230600"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}