{"id":230762,"date":"2022-12-13T11:08:00","date_gmt":"2022-12-13T08:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230762"},"modified":"2022-12-13T11:10:14","modified_gmt":"2022-12-13T08:10:14","slug":"organizacion-de-las-pantallas-de-configuracion-de-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/organizacion-de-las-pantallas-de-configuracion-de-wordpress\/","title":{"rendered":"Organizaci\u00f3n de las pantallas de configuraci\u00f3n de WordPress"},"content":{"rendered":"\n<p>A medida que muchos de nosotros sigamos avanzando con <strong><a href=\"https:\/\/php.net\/manual\/en\/migration70.new-features.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP7+<\/a><\/strong>, podemos seguir aprovechando muchas caracter\u00edsticas nuevas que ofrece el lenguaje.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728aab90bf.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728aab90bf.png\" alt=\"Organizaci\u00f3n de las pantallas de configuraci\u00f3n de WordPress\"><\/a><\/p>\n<p>Mientras tanto, sin embargo, todav\u00eda hay caracter\u00edsticas de PHP y software relacionado que podemos usar para ayudar a agilizar nuestro desarrollo. El menor de los cuales (y sobre el que he <strong><a href=\"https:\/\/wordpress.mediadoma.com\/es\/espacios-de-nombres-y-carga-automatica-en-wordpress\/\" title=\"escrito y hablado\">escrito y hablado<\/a><\/strong> un poco) son los espacios de nombres.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728af99d84.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728af99d84.png\" alt=\"Organizaci\u00f3n de las pantallas de configuraci\u00f3n de WordPress\"><\/a><\/p>\n<p>Sin embargo, aqu\u00ed est\u00e1 la cosa: me gusta tener los archivos y directorios de mi complemento estructurados para que est\u00e9n organizados para reflejar las convenciones de espacio de nombres que siguen. Y esto se puede hacer para taxonom\u00edas, metaboxes, objetos de dominio, funcionalidad relacionada con la base de datos, etc.<\/p>\n<p>En esta publicaci\u00f3n, sin embargo, quiero hablar sobre una forma de organizar las pantallas de configuraci\u00f3n de WordPress desde las estructuras organizativas l\u00f3gicas, es decir, la ubicaci\u00f3n del sistema de archivos, y virtuales, es decir, los espacios de nombres.<\/p>\n<h2>Organizaci\u00f3n de las pantallas de configuraci\u00f3n de WordPress<\/h2>\n<p>El primer punto que quiero se\u00f1alar es este: aunque estoy hablando de organizar las pantallas de configuraci\u00f3n de WordPress, no estoy hablando de la API. En cambio, suponga que para esta publicaci\u00f3n estoy hablando de lo siguiente:<\/p>\n<ul>\n<li>un men\u00fa personalizado que tiene una <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e1gina de men\u00fa asociada,<\/a><\/strong><\/li>\n<li>una p\u00e1gina de men\u00fa que presenta los requisitos para una p\u00e1gina de configuraci\u00f3n (como el <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nonce_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">campo nonce,<\/a><\/strong> etc.)<\/li>\n<li>un parcial que contiene la configuraci\u00f3n real (o m\u00faltiples parciales si desea incluir m\u00faltiples configuraciones).<\/li>\n<\/ul>\n<p>No voy a hablar sobre el proceso de sanitizaci\u00f3n, serializaci\u00f3n, recuperaci\u00f3n, validaci\u00f3n y visualizaci\u00f3n. Esto es puramente organizativo.<\/p>\n<h3>Pensando a trav\u00e9s del proceso<\/h3>\n<p>Dado que vamos a organizar nuestros archivos a trav\u00e9s de directorios que tambi\u00e9n se asignan 1:1 con espacios de nombres, pensemos exactamente qu\u00e9 es lo que necesitaremos. La forma en que lo acerco es esta:<\/p>\n<ol>\n<li>Estamos creando algo espec\u00edficamente para la aplicaci\u00f3n contextual de WordPress. Esto indica un espacio de nombres.<\/li>\n<li>Vamos a crear un men\u00fa de administraci\u00f3n, lo que significa que ambos estamos trabajando en el \u00e1rea de administraci\u00f3n de WordPress, por lo tanto, otro espacio de nombres, y con men\u00fas, que son otro espacio de nombres.<\/li>\n<li>A continuaci\u00f3n, necesitamos archivos para mostrar la pantalla est\u00e1ndar de WordPress, por lo que necesitaremos un espacio de nombres Vistas,<\/li>\n<li>Y luego necesitaremos un c\u00f3digo espec\u00edfico del dominio para colocarlo en la vista, por lo que finalmente necesitaremos un directorio de parciales (y, por lo tanto, un espacio de nombres).<\/li>\n<\/ol>\n<p>Entonces, la organizaci\u00f3n l\u00f3gica final de los datos se ver\u00eda as\u00ed:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728b4f0fe4.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161718-61e728b4f0fe4.png\" alt=\"Organizaci\u00f3n de las pantallas de configuraci\u00f3n de WordPress\"><\/a><\/p>\n<p>Quiz\u00e1s lo m\u00e1s importante a tener en cuenta sobre esta organizaci\u00f3n particular de archivos es que la clase <strong>AdminMenu<\/strong> es una clase base de la que pueden heredar todas las clases espec\u00edficas (o m\u00e1s concretas).<\/p>\n<p>Esto significa que la clase <strong>AcmeAdminMenu<\/strong> hereda ciertas propiedades y funciones de ella y luego implementa su l\u00f3gica o agrega su l\u00f3gica tambi\u00e9n.<\/p>\n<h3>Espacio de nombres de cada archivo<\/h3>\n<p>Cuando organiza sus archivos de esta manera, los espacios de nombres se vuelven casi evidentes, \u00bfno es as\u00ed? Aqu\u00ed est\u00e1 el espacio de nombres para cada uno de los archivos:<\/p>\n<ul>\n<li>WordPressAdminMenuAdminMenu<\/li>\n<li>WordPressAdminMenuAcmeAdminMenu<\/li>\n<li>WordPressAdminMenuViewsConfiguraci\u00f3n<\/li>\n<li>WordPressAdministradorMen\u00faVistasConfiguraci\u00f3nParciales<\/li>\n<\/ul>\n<p>Tenga en cuenta que, dado que <strong>acme-settings.php<\/strong> es t\u00e9cnicamente solo un marcado para las opciones de representaci\u00f3n, no necesariamente tiene que tener un espacio de nombres porque est\u00e1 incluido en la <strong>Vista<\/strong> que lo representa.<\/p>\n<p>De todos modos, si eres un fan\u00e1tico de mantener las cosas lo m\u00e1s organizadas posible, tiene sentido anidar un parcial dentro de un directorio llamado as\u00ed.<\/p>\n<h2>\u00bfQu\u00e9 pasa con el c\u00f3digo?<\/h2>\n<p>Si est\u00e1 interesado en ver el c\u00f3digo para algo como esto, estoy considerando armar un peque\u00f1o complemento que demuestre c\u00f3mo encaja todo esto. Despu\u00e9s de todo, esto es un poco de alto nivel, \u00bfno? Quiero decir que no hay implementaci\u00f3n.<\/p>\n<p>Por otra parte, si esto lo ayuda a orientarlo en la direcci\u00f3n correcta para un proyecto actual o futuro, entonces puede ser suficiente.<\/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>Quiero hablar sobre una forma de organizar las pantallas de configuraci\u00f3n de WordPress tanto desde la l\u00f3gica como desde las estructuras organizativas virtuales.<\/p>\n","protected":false},"author":1,"featured_media":236109,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,831,800,861],"tags":[1172],"class_list":["post-230762","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-guia-para-principiantes","category-php-2","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230762","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=230762"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230762\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/236109"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}