{"id":230810,"date":"2022-12-14T13:30:00","date_gmt":"2022-12-14T10:30:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230810"},"modified":"2022-12-14T13:30:21","modified_gmt":"2022-12-14T10:30:21","slug":"una-funcion-de-ayuda-para-los-avisos-de-administracion","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/una-funcion-de-ayuda-para-los-avisos-de-administracion\/","title":{"rendered":"Una funci\u00f3n de ayuda para los avisos de administraci\u00f3n"},"content":{"rendered":"\n<p>Si est\u00e1 en el negocio de crear complementos, o incluso temas, y est\u00e1 incorporando pr\u00e1cticas orientadas a objetos en su trabajo, es probable que se enfrente a alg\u00fan tipo de serializaci\u00f3n. Y uno de los aspectos de la serializaci\u00f3n que requiere alg\u00fan tipo de retroalimentaci\u00f3n para el usuario.<\/p>\n<p>Este puede ser un mensaje de \u00e9xito, un mensaje de falla o simplemente un mensaje que advierte al usuario que algo sali\u00f3 mal o quiz\u00e1s algo deber\u00eda actualizarse.<\/p>\n<p>En cualquier caso, WordPress proporciona todas las facilidades que necesitamos; sin embargo, podemos hacerlo a\u00fan m\u00e1s f\u00e1cil escribiendo una funci\u00f3n de ayuda para los avisos de administraci\u00f3n. Es simple, tambi\u00e9n.<\/p>\n<h2>Avisos de administraci\u00f3n: una funci\u00f3n auxiliar<\/h2>\n<p>Cuando se trata de escribir avisos de administraci\u00f3n, es importante familiarizarse con <strong><a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Action_Reference\/admin_notices\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el gancho apropiado.<\/a><\/strong><\/p>\n<p>A partir de ah\u00ed, tambi\u00e9n necesita saber los siguientes nombres de clase:<\/p>\n<ul>\n<li>aviso-error<\/li>\n<li>aviso-\u00e9xito<\/li>\n<li>aviso-advertencia<\/li>\n<li>aviso-info<\/li>\n<\/ul>\n<p>Con eso, es posible escribir una funci\u00f3n de ayuda que use el enlace anterior y una <strong><a href=\"https:\/\/php.net\/manual\/en\/functions.anonymous.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">funci\u00f3n an\u00f3nima<\/a><\/strong> (o un <strong><a href=\"https:\/\/php.net\/manual\/en\/class.closure.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cierre<\/a><\/strong>) para lograr exactamente lo que necesita. Pero primero tenga en cuenta lo siguiente:<\/p>\n<blockquote>\n<p>Las funciones an\u00f3nimas, tambi\u00e9n conocidas como cierres, permiten la creaci\u00f3n de funciones que no tienen un nombre espec\u00edfico. Son m\u00e1s \u00fatiles como el valor de los par\u00e1metros de <a href=\"https:\/\/php.net\/manual\/en\/language.pseudo-types.php#language.types.callback\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">devoluci\u00f3n<\/a> de llamada, pero tienen muchos otros usos.<\/p>\n<\/blockquote>\n<p>Dicho esto, debe tener todo lo que necesita para escribir su ayudante y tener una idea de cu\u00e1ndo vaciarlo.<\/p>\n<p>Primero, <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 funci\u00f3n auxiliar:<\/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>A continuaci\u00f3n, digamos que la solicitud que se est\u00e1 realizando contiene datos no v\u00e1lidos. Para manejar esto, usar\u00eda el ayudante anterior <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/a7b10e37c4128913e4069f2825a443cd#file-01-admin-notice-error-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">como el siguiente:<\/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>Por otro lado, digamos 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\">todo funciona 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>Como puede ver, esta funci\u00f3n utiliza ganchos nativos de WordPress, instalaciones de PHP y tambi\u00e9n crea un m\u00e9todo que se puede <strong><a href=\"https:\/\/wordpress.mediadoma.com\/es\/escritura-de-pruebas-unitarias-con-phpunit-parte-1-la-configuracion\/\" title=\"probar de forma unitaria,\">probar de forma unitaria,<\/a><\/strong> lo que es importante si tiene como objetivo escribir <strong><a href=\"https:\/\/tommcfarlin.com\/web-application-foundation\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">aplicaciones web comprobables en WordPress.<\/a><\/strong><\/p>\n<p>E incluso si no, tiene una manera m\u00e1s f\u00e1cil de mantener su c\u00f3digo un poco m\u00e1s <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Don%27t_repeat_yourself\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">SECO<\/a><\/strong> que antes.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <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 proporciona todas las facilidades que necesitamos; sin embargo, podemos hacerlo m\u00e1s f\u00e1cil escribiendo una funci\u00f3n de ayuda para los avisos de administraci\u00f3n. Es simple, tambi\u00e9n.<\/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":[892,716,861],"tags":[1172],"class_list":["post-230810","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=230810"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/236170"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}