{"id":231338,"date":"2022-12-13T10:42:00","date_gmt":"2022-12-13T07:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231338"},"modified":"2022-12-13T10:42:05","modified_gmt":"2022-12-13T07:42:05","slug":"organizzare-le-schermate-delle-impostazioni-di-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/organizzare-le-schermate-delle-impostazioni-di-wordpress\/","title":{"rendered":"Organizzare le schermate delle impostazioni di WordPress"},"content":{"rendered":"\n<p>Poich\u00e9 molti di noi continuano ad andare avanti 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>, possiamo continuare a sfruttare molte nuove funzionalit\u00e0 offerte dal linguaggio.<\/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=\"Organizzare le schermate delle impostazioni di WordPress\"><\/a><\/p>\n<p>Nel frattempo, tuttavia, ci sono ancora funzionalit\u00e0 di PHP e del relativo software che possiamo utilizzare per semplificare il nostro sviluppo. L&#8217;ultimo dei quali (e quello di cui ho <strong><a href=\"https:\/\/wordpress.mediadoma.com\/it\/spazi-dei-nomi-e-caricamento-automatico-in-wordpress\/\" title=\"scritto e parlato\">scritto e parlato<\/a><\/strong> un po&#8217;) sono gli spazi dei nomi.<\/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=\"Organizzare le schermate delle impostazioni di WordPress\"><\/a><\/p>\n<p>Ecco la cosa, per\u00f2: mi piace avere i file e le directory del mio plugin strutturati in modo che siano organizzati per rispecchiare le convenzioni dello spazio dei nomi che seguono. E questo pu\u00f2 essere fatto per tassonomie, meta box, oggetti di dominio, funzionalit\u00e0 relative al database e cos\u00ec via.<\/p>\n<p>In questo post, tuttavia, voglio parlare di un modo per organizzare le schermate delle impostazioni di WordPress sia dalle strutture organizzative logiche, ovvero la posizione del loro file system, sia da quelle virtuali, ovvero i loro spazi dei nomi.<\/p>\n<h2>Organizzare le schermate delle impostazioni di WordPress<\/h2>\n<p>Il primo punto che voglio sottolineare \u00e8 questo: anche se sto parlando dell&#8217;organizzazione delle schermate delle impostazioni di WordPress, non sto parlando dell&#8217;API. Invece, supponiamo che per questo post sto parlando di quanto segue:<\/p>\n<ul>\n<li>un menu personalizzato con una <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">pagina di menu associata,<\/a><\/strong><\/li>\n<li>una pagina di menu che rende i requisiti per una pagina delle impostazioni (come il <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> e cos\u00ec via)<\/li>\n<li>un parziale che contiene le impostazioni effettive (o pi\u00f9 parziali se stai cercando di includere pi\u00f9 impostazioni).<\/li>\n<\/ul>\n<p>Non parler\u00f2 del processo di sanificazione, serializzazione, recupero, convalida e visualizzazione. Questo \u00e8 puramente organizzativo.<\/p>\n<h3>Pensare attraverso il processo<\/h3>\n<p>Dato che organizzeremo i nostri file attraverso directory che mappano anche 1:1 con gli spazi dei nomi, pensiamo esattamente a ci\u00f2 di cui avremo bisogno. Il modo in cui mi avvicino \u00e8 questo:<\/p>\n<ol>\n<li>Stiamo creando qualcosa di specifico per il contesto dell&#8217;applicazione WordPress. Questo indica uno spazio dei nomi.<\/li>\n<li>Creeremo un menu di amministrazione, il che significa che stiamo lavorando sia nell&#8217;area di amministrazione di WordPress, quindi un altro spazio dei nomi, sia con i menu, che sono un altro spazio dei nomi.<\/li>\n<li>Successivamente, abbiamo bisogno di file per visualizzare la schermata standard per WordPress, quindi avremo bisogno di uno spazio dei nomi di Views,<\/li>\n<li>E poi avremo bisogno del codice specifico del dominio da inserire nella vista, quindi alla fine avremo bisogno di una directory Partials (e quindi di uno spazio dei nomi).<\/li>\n<\/ol>\n<p>Quindi l&#8217;organizzazione logica finale dei dati sarebbe simile a questa:<\/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=\"Organizzare le schermate delle impostazioni di WordPress\"><\/a><\/p>\n<p>Forse la cosa pi\u00f9 importante da notare su questa particolare organizzazione dei file \u00e8 che la classe <strong>AdminMenu<\/strong> \u00e8 una classe base da cui possono ereditare tutte le classi specifiche (o pi\u00f9 concrete).<\/p>\n<p>Ci\u00f2 significa che la classe <strong>AcmeAdminMenu<\/strong> eredita determinate propriet\u00e0 e funzioni da essa e quindi implementa la sua logica o aggiunge anche la sua logica.<\/p>\n<h3>Spazio dei nomi a ogni file<\/h3>\n<p>Quando organizzi i tuoi file in questo modo, gli spazi dei nomi diventano quasi evidenti, vero? Ecco lo spazio dei nomi per ciascuno dei file:<\/p>\n<ul>\n<li>WordPressAdminMenuAdminMenu<\/li>\n<li>WordPressAdminMenuAcmeAdminMenu<\/li>\n<li>WordPressAdminMenuVisteImpostazioni<\/li>\n<li>WordPressAdminMenuViewsSettingsPartials<\/li>\n<\/ul>\n<p>Nota che poich\u00e9 <strong>acme-settings.php<\/strong> \u00e8 tecnicamente solo un markup per le opzioni di rendering, non deve necessariamente avere uno spazio dei nomi perch\u00e9 \u00e8 incluso dalla <strong>vista<\/strong> che lo rende.<\/p>\n<p>Indipendentemente da ci\u00f2, se sei un fan di mantenere le cose il pi\u00f9 organizzate possibile, ha senso solo annidare un parziale all&#8217;interno di una directory chiamata proprio cos\u00ec.<\/p>\n<h2>E il codice?<\/h2>\n<p>Se sei interessato a vedere il codice per qualcosa del genere, sto pensando di mettere insieme un piccolo plugin che dimostri come tutto questo si adatta insieme. Dopotutto, questo \u00e8 un po&#8217; di alto livello, vero? Voglio dire, non c&#8217;\u00e8 implementazione.<\/p>\n<p>Poi di nuovo, se questo ti aiuta a indirizzarti nella giusta direzione per un progetto attuale o futuro, allora potrebbe essere sufficiente.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voglio parlare di un modo per organizzare le schermate delle impostazioni di WordPress sia dalla logica che dalle strutture organizzative virtuali.<\/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":[896,835,804,720,865],"tags":[1168],"class_list":["post-231338","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231338"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231338\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236109"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}