{"id":230579,"date":"2022-12-09T20:09:00","date_gmt":"2022-12-09T17:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230579"},"modified":"2022-12-07T12:04:54","modified_gmt":"2022-12-07T09:04:54","slug":"menu-de-administracion-de-wordpress-reordenacion-del-submenu","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/menu-de-administracion-de-wordpress-reordenacion-del-submenu\/","title":{"rendered":"Men\u00fa de administraci\u00f3n de WordPress: reordenaci\u00f3n del submen\u00fa"},"content":{"rendered":"\n<p>Una de las cosas de trabajar con la API del men\u00fa de WordPress (es decir, <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_menu_page<\/a>, <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_submenu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_submenu_page<\/a> y similares) es que no facilita reordenar los elementos del submen\u00fa.<\/p>\n<p>Claro, para ciertas cosas, como taxonom\u00edas o cosas por el estilo, puede cambiar el orden en que se registran. Pero supongamos que tiene un men\u00fa de administraci\u00f3n de WordPress y luego algunas p\u00e1ginas de submen\u00fa en ese men\u00fa en particular.<\/p>\n<p>De forma predeterminada, WordPress crea el men\u00fa de nivel superior y luego crea inmediatamente un elemento de submen\u00fa debajo del men\u00fa de nivel superior que se vincula a la misma p\u00e1gina. En muchos casos, esto puede ser ideal.<\/p>\n<p>En algunos casos, sin embargo, es posible que desee cambiar eso.<\/p>\n<h2>Men\u00fa de administraci\u00f3n de WordPress<\/h2>\n<p>Para dar un ejemplo de cu\u00e1ndo es posible que desee cambiar algo, podr\u00eda ser algo como esto:<\/p>\n<ul>\n<li>Tiene un men\u00fa de nivel superior que est\u00e1 destinado a ofrecer opciones despu\u00e9s de conectarse con una API de terceros,<\/li>\n<li>La API de terceros requiere una clave API (o alguna otra autenticaci\u00f3n), por lo que primero debe proporcionar la configuraci\u00f3n para eso,<\/li>\n<li>\u00bfPor qu\u00e9 no hacer que el primer elemento del men\u00fa sea la Configuraci\u00f3n y el segundo elemento del men\u00fa las Herramientas API reales?<\/li>\n<\/ul>\n<p>Por supuesto, cuando no se ha establecido la configuraci\u00f3n, tambi\u00e9n es \u00fatil mostrar un mensaje en el men\u00fa principal de herramientas de API que indica que el usuario debe hacer clic en la p\u00e1gina Configuraci\u00f3n para ingresar su configuraci\u00f3n.<\/p>\n<p>Pero eso est\u00e1 m\u00e1s all\u00e1 del alcance de esta publicaci\u00f3n. Por ahora, aqu\u00ed hay una forma de administrar el reordenamiento del men\u00fa desde el lado del servidor. Primero <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/f4a31feab1a5601496afa644f21e2956#file-00-reorder-submenu-items-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el c\u00f3digo<\/a><\/strong>, luego la explicaci\u00f3n.<\/p>\n<pre><code>&lt;?php\nadd_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);\n\/**\n * Reorders the menu by placing the second item before the first item.\n *\/\nfunction acmeReorderSubmenuItems()\n{\n    global $submenu;\n    $newSubmenu = [];\n    foreach ($submenu as $menuName =&gt; $menuItems) {\n        if ('acme-api-tools' === $menuName) {\n            $newSubmenu[0] = $menuItems[1];\n            $newSubmenu[1] = $menuItems[0];\n            $submenu['acme-api-tools'] = $newSubmenu;\n            break;\n        }\n    }\n}<\/code><\/pre>\n<p>En t\u00e9rminos generales, estoy usando esto en el contexto de un objeto con espacio de nombres, pero para esta publicaci\u00f3n, lo estoy relegando a una funci\u00f3n que existe en un espacio de nombres.<\/p>\n<\/p>\n<p>Algunas cosas a tener en cuenta:<\/p>\n<ul>\n<li>Estoy usando el gancho <a href=\"https:\/\/codex.wordpress.org\/Plugin_API\/Filter_Reference\/custom_menu_order\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">custom_menu_order<\/a> que es un lugar ideal para trabajar en los elementos del men\u00fa en WordPress,<\/li>\n<li>Estoy buscando espec\u00edficamente el submen\u00fa acme-api-tools en la clave <strong>$menuName<\/strong> de la variable de matriz <strong>$submenu ,<\/strong><\/li>\n<li>Creo una matriz, <strong>$newSubmenu<\/strong>, y luego cambio los elementos y asigno el nuevo submen\u00fa al submen\u00fa existente identificado por la clave.<\/li>\n<\/ul>\n<p>Hay algunos comentarios, quiz\u00e1s incluso problemas (o al menos consideraciones serias), con este enfoque.<\/p>\n<p>Es decir, el c\u00f3digo espera saber con precisi\u00f3n la clave con la que queremos trabajar. En algunos casos, esto est\u00e1 bien, pero si est\u00e1 buscando modificar un men\u00fa para el cual no conoce la clave (como <strong>acme-api-tools<\/strong> ), entonces necesitar\u00e1 modificar esto.<\/p>\n<p>A continuaci\u00f3n, esto tambi\u00e9n supone que solo hay dos elementos de men\u00fa para intercambiar. Es bastante f\u00e1cil en el caso anterior, pero si hubiera m\u00e1s, entonces probablemente necesitar\u00eda una funci\u00f3n para manejar las cosas y devolver la nueva matriz.<\/p>\n<h2>Suficiente para empezar<\/h2>\n<p>Dicho esto, la funcionalidad anterior deber\u00eda brindar suficiente informaci\u00f3n sobre al menos c\u00f3mo comenzar a hacer esto, si no m\u00e1s, y luego c\u00f3mo manipular la matriz de submen\u00fa que est\u00e1 visible.<\/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 crea el men\u00fa de nivel superior y luego crea un elemento de submen\u00fa debajo del men\u00fa de nivel superior que enlaza con la misma p\u00e1gina. Es posible que desee cambiar eso.<\/p>\n","protected":false},"author":1,"featured_media":236238,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,800,840,861],"tags":[1172],"class_list":["post-230579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230579","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=230579"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/236238"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}