{"id":230555,"date":"2022-12-13T10:40:00","date_gmt":"2022-12-13T07:40:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230555"},"modified":"2022-12-13T10:41:40","modified_gmt":"2022-12-13T07:41:40","slug":"organisera-wordpress-instaellningsskaermar","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/organisera-wordpress-instaellningsskaermar\/","title":{"rendered":"Organisera WordPress-inst\u00e4llningssk\u00e4rmar"},"content":{"rendered":"\n<p>Eftersom m\u00e5nga av oss forts\u00e4tter att g\u00e5 vidare med <strong><a href=\"https:\/\/php.net\/manual\/en\/migration70.new-features.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP7+<\/a><\/strong> kan vi forts\u00e4tta att dra nytta av m\u00e5nga nya funktioner som spr\u00e5ket erbjuder.<\/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=\"Organisera WordPress-inst\u00e4llningssk\u00e4rmar\"><\/a><\/p>\n<p>Men under tiden finns det fortfarande funktioner i PHP och relaterad programvara som vi kan anv\u00e4nda f\u00f6r att effektivisera v\u00e5r utveckling. Det minsta (och det som jag har <strong><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/namnutrymmen-och-autoladdning-i-wordpress\/\" title=\"skrivit och talat\">skrivit och talat<\/a><\/strong> om lite) \u00e4r namnrymder.<\/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=\"Organisera WordPress-inst\u00e4llningssk\u00e4rmar\"><\/a><\/p>\n<p>Men h\u00e4r \u00e4r grejen: Jag gillar att ha mina plugins filer och kataloger strukturerade s\u00e5 att de \u00e4r organiserade f\u00f6r att spegla namnutrymmeskonventionerna de f\u00f6ljer. Och detta kan g\u00f6ras f\u00f6r taxonomier, metaboxar, dom\u00e4nobjekt, databasrelaterad funktionalitet och s\u00e5 vidare.<\/p>\n<p>I det h\u00e4r inl\u00e4gget vill jag dock prata om ett s\u00e4tt att organisera WordPress-inst\u00e4llningssk\u00e4rmar fr\u00e5n b\u00e5de de logiska \u2013 det vill s\u00e4ga deras filsystemsplats \u2013 och de virtuella \u2013 det vill s\u00e4ga deras namnrymder \u2013 organisatoriska strukturer.<\/p>\n<h2>Organisera WordPress-inst\u00e4llningssk\u00e4rmar<\/h2>\n<p>Den f\u00f6rsta punkten jag vill g\u00f6ra \u00e4r denna: \u00c4ven om jag pratar om att organisera WordPress-inst\u00e4llningssk\u00e4rmarna, pratar jag ingenting om API:et. Anta ist\u00e4llet att jag f\u00f6r det h\u00e4r inl\u00e4gget talar om f\u00f6ljande:<\/p>\n<ul>\n<li>en anpassad meny som har en associerad <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">menysida,<\/a><\/strong><\/li>\n<li>en menysida som \u00e5terger kraven f\u00f6r en inst\u00e4llningssida (som <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nonce_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nonce-f\u00e4ltet<\/a><\/strong> och s\u00e5 vidare)<\/li>\n<li>en del som inneh\u00e5ller de faktiska inst\u00e4llningarna (eller flera deldelar om du vill inkludera flera inst\u00e4llningar).<\/li>\n<\/ul>\n<p>Jag kommer inte att prata om processen f\u00f6r sanering, serialisering, h\u00e4mtning, validering och visning. Detta \u00e4r rent organisatoriskt.<\/p>\n<h3>Att t\u00e4nka igenom processen<\/h3>\n<p>Med tanke p\u00e5 att vi kommer att organisera v\u00e5ra filer genom kataloger som ocks\u00e5 mappar 1:1 med namnomr\u00e5den, l\u00e5t oss fundera igenom exakt vad det \u00e4r vi beh\u00f6ver. S\u00e5 h\u00e4r n\u00e4rmar jag mig det:<\/p>\n<ol>\n<li>Vi skapar n\u00e5got specifikt f\u00f6r WordPress-applikationen. Detta indikerar ett namnomr\u00e5de.<\/li>\n<li>Vi kommer att skapa en administrationsmeny som inneb\u00e4r att vi b\u00e5de arbetar i administrationsomr\u00e5det f\u00f6r WordPress, allts\u00e5 ett annat namnomr\u00e5de, och med menyer, som \u00e4r ett annat namnomr\u00e5de.<\/li>\n<li>D\u00e4refter beh\u00f6ver vi filer f\u00f6r att visa standardsk\u00e4rmen f\u00f6r WordPress s\u00e5 vi beh\u00f6ver ett namnomr\u00e5de Views,<\/li>\n<li>Och d\u00e5 beh\u00f6ver vi dom\u00e4nspecifik kod f\u00f6r att komma in i vyn s\u00e5 att vi i slut\u00e4ndan kommer att beh\u00f6va en Partials-katalog (och d\u00e4rmed ett namnomr\u00e5de).<\/li>\n<\/ol>\n<p>S\u00e5 den slutliga, logiska organisationen av data skulle se ut ungef\u00e4r s\u00e5 h\u00e4r:<\/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=\"Organisera WordPress-inst\u00e4llningssk\u00e4rmar\"><\/a><\/p>\n<p>Det kanske viktigaste att notera om denna speciella organisation av filer \u00e4r att <strong>AdminMenu-<\/strong> klassen \u00e4r en basklass fr\u00e5n vilken alla specifika (eller mer konkreta) klasser kan \u00e4rva.<\/p>\n<p>Detta inneb\u00e4r att klassen <strong>AcmeAdminMenu<\/strong> \u00e4rver vissa egenskaper och funktioner fr\u00e5n den och sedan implementerar dess logik eller l\u00e4gger till dess logik.<\/p>\n<h3>Namnavst\u00e5nd till varje fil<\/h3>\n<p>N\u00e4r du organiserar dina filer p\u00e5 det h\u00e4r s\u00e4ttet blir namnomr\u00e5dena n\u00e4stan sj\u00e4lvklara, eller hur? H\u00e4r \u00e4r namnutrymmet f\u00f6r var och en av filerna:<\/p>\n<ul>\n<li>WordPressAdminMenuAdminMenu<\/li>\n<li>WordPressAdminMenuAcmeAdminMenu<\/li>\n<li>WordPressAdminMenuViewsSettings<\/li>\n<li>WordPressAdminMenyViewsSettingsDelar<\/li>\n<\/ul>\n<p>Observera att eftersom <strong>acme-settings.php<\/strong> tekniskt sett bara \u00e4r uppm\u00e4rkning f\u00f6r renderingsalternativ, beh\u00f6ver den inte n\u00f6dv\u00e4ndigtvis vara namnbredd eftersom den ing\u00e5r i <strong>vyn<\/strong> som renderar den.<\/p>\n<p>Oavsett, om du \u00e4r ett fan av att h\u00e5lla saker s\u00e5 organiserade som m\u00f6jligt, \u00e4r det bara vettigt att kapsla en del i en katalog som heter just det.<\/p>\n<h2>Vad s\u00e4gs om kod?<\/h2>\n<p>Om du \u00e4r intresserad av att se koden f\u00f6r n\u00e5got s\u00e5nt h\u00e4r, funderar jag p\u00e5 att s\u00e4tta ihop ett litet plugin som visar hur allt detta h\u00e4nger ihop. Det h\u00e4r \u00e4r trots allt lite h\u00f6g niv\u00e5, eller hur? Jag menar att det inte finns n\u00e5gon implementering.<\/p>\n<p>\u00c5terigen, om detta hj\u00e4lper dig att peka i r\u00e4tt riktning f\u00f6r ett p\u00e5g\u00e5ende eller framtida projekt, kan det vara tillr\u00e4ckligt.<\/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>Jag vill prata om ett s\u00e4tt att organisera WordPress-inst\u00e4llningssk\u00e4rmar fr\u00e5n b\u00e5de logiken och de virtuella organisationsstrukturerna.<\/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":[838,901,807,724,868],"tags":[1173],"class_list":["post-230555","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-foer-nyboerjare","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230555","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=230555"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/230555\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/236109"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=230555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=230555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=230555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}