{"id":231153,"date":"2022-12-13T11:03:00","date_gmt":"2022-12-13T08:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231153"},"modified":"2022-12-13T11:03:52","modified_gmt":"2022-12-13T08:03:52","slug":"wordpress-asetusruutujen-jaerjestaeminen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/wordpress-asetusruutujen-jaerjestaeminen\/","title":{"rendered":"WordPress-asetusruutujen j\u00e4rjest\u00e4minen"},"content":{"rendered":"\n<p>Koska monet meist\u00e4 jatkavat <strong><a href=\"https:\/\/php.net\/manual\/en\/migration70.new-features.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP7+<\/a><\/strong> :n k\u00e4ytt\u00f6\u00e4, voimme jatkossakin hy\u00f6dynt\u00e4\u00e4 monia kielen tarjoamia uusia ominaisuuksia.<\/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=\"WordPress-asetusruutujen j\u00e4rjest\u00e4minen\"><\/a><\/p>\n<p>Sill\u00e4 v\u00e4lin on kuitenkin viel\u00e4 PHP:n ja siihen liittyvien ohjelmistojen ominaisuuksia, joita voimme k\u00e4ytt\u00e4\u00e4 kehitysty\u00f6n tehostamisessa. V\u00e4hin niist\u00e4 (ja mist\u00e4 olen <strong><a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nimitilat-ja-automaattinen-lataus-wordpressissae\/\" title=\"kirjoittanut ja puhunut\">kirjoittanut ja puhunut<\/a><\/strong> v\u00e4h\u00e4n) on nimiavaruudet.<\/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=\"WordPress-asetusruutujen j\u00e4rjest\u00e4minen\"><\/a><\/p>\n<p>Asia on kuitenkin t\u00e4ss\u00e4: Haluan, ett\u00e4 liit\u00e4nn\u00e4isteni tiedostot ja hakemistot on j\u00e4rjestetty siten, ett\u00e4 ne on j\u00e4rjestetty vastaamaan niiden noudattamia nimiavaruusk\u00e4yt\u00e4nt\u00f6j\u00e4. Ja t\u00e4m\u00e4 voidaan tehd\u00e4 taksonomioiden, metalaatikoiden, verkkotunnusobjektien, tietokantoihin liittyvien toimintojen ja niin edelleen.<\/p>\n<p>T\u00e4ss\u00e4 viestiss\u00e4 haluan kuitenkin puhua tavasta j\u00e4rjest\u00e4\u00e4 WordPress-asetusn\u00e4ytt\u00f6j\u00e4 sek\u00e4 loogisista \u2013 eli niiden tiedostoj\u00e4rjestelm\u00e4n sijainnista \u2013 ett\u00e4 virtuaalisista \u2013 eli niiden nimiavaruuksista \u2013 organisaatiorakenteista.<\/p>\n<h2>WordPress-asetusruutujen j\u00e4rjest\u00e4minen<\/h2>\n<p>Ensimm\u00e4inen asia, jonka haluan tehd\u00e4, on t\u00e4m\u00e4: Vaikka puhun WordPress-asetusruutujen j\u00e4rjest\u00e4misest\u00e4, en puhu mit\u00e4\u00e4n API:sta. Oletetaan sen sijaan, ett\u00e4 t\u00e4ss\u00e4 viestiss\u00e4 puhun seuraavista:<\/p>\n<ul>\n<li>mukautettu valikko, johon liittyy <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">valikkosivu,<\/a><\/strong><\/li>\n<li>valikkosivu, joka esitt\u00e4\u00e4 asetussivun vaatimukset (kuten <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_nonce_field\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nonce-kentt\u00e4<\/a><\/strong> ja niin edelleen)<\/li>\n<li>osa, joka sis\u00e4lt\u00e4\u00e4 todelliset asetukset (tai useita osia, jos haluat sis\u00e4llytt\u00e4\u00e4 useita asetuksia).<\/li>\n<\/ul>\n<p>En aio puhua desinfiointi-, serialisointi-, haku-, validointi- ja n\u00e4ytt\u00f6prosessista. T\u00e4m\u00e4 on puhtaasti organisatorista.<\/p>\n<h3>Prosessin kautta ajattelu<\/h3>\n<p>Koska aiomme j\u00e4rjest\u00e4\u00e4 tiedostomme hakemistojen kautta, joissa on my\u00f6s 1:1 nimiavaruuksia, mietit\u00e4\u00e4n tarkasti, mit\u00e4 tarvitsemme. Tapani l\u00e4hestyn asiaa on t\u00e4m\u00e4:<\/p>\n<ol>\n<li>Luomme jotain nimenomaan konteksti-WordPress-sovellusta varten. T\u00e4m\u00e4 osoittaa nimiavaruuden.<\/li>\n<li>Aiomme luoda hallintavalikon, mik\u00e4 tarkoittaa, ett\u00e4 ty\u00f6skentelemme sek\u00e4 WordPressin hallintoalueella, eli toisessa nimiavaruudessa, ett\u00e4 valikkojen kanssa, jotka ovat toinen nimiavaruus.<\/li>\n<li>Seuraavaksi tarvitsemme tiedostoja WordPressin vakion\u00e4yt\u00f6n n\u00e4ytt\u00e4miseen, joten tarvitsemme Views-nimitilan,<\/li>\n<li>Ja sitten tarvitsemme verkkotunnuskohtaisen koodin pudottamaan n\u00e4kym\u00e4\u00e4n, joten tarvitsemme lopulta Partials-hakemiston (ja siten nimitilan).<\/li>\n<\/ol>\n<p>Joten lopullinen, looginen tietojen j\u00e4rjest\u00e4minen n\u00e4ytt\u00e4isi suunnilleen t\u00e4lt\u00e4:<\/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=\"WordPress-asetusruutujen j\u00e4rjest\u00e4minen\"><\/a><\/p>\n<p>Ehk\u00e4 t\u00e4rkein asia, joka on huomioitava t\u00e4ss\u00e4 tiedostojen j\u00e4rjest\u00e4misess\u00e4, on se, ett\u00e4 <strong>AdminMenu-<\/strong> luokka on perusluokka, josta kaikki tietyt (tai konkreettisemmat) luokat voivat peri\u00e4.<\/p>\n<p>T\u00e4m\u00e4 tarkoittaa, ett\u00e4 <strong>AcmeAdminMenu-<\/strong> luokka perii silt\u00e4 tietyt ominaisuudet ja toiminnot ja sitten toteuttaa logiikkansa tai lis\u00e4\u00e4 my\u00f6s logiikkansa.<\/p>\n<h3>Nimiv\u00e4lit jokaisessa tiedostossa<\/h3>\n<p>Kun j\u00e4rjest\u00e4t tiedostosi t\u00e4ll\u00e4 tavalla, nimiavaruuksista tulee melkein itsest\u00e4\u00e4n selvyyksi\u00e4, eik\u00f6 niin? T\u00e4ss\u00e4 on kunkin tiedoston nimiavaruus:<\/p>\n<ul>\n<li>WordPressAdminMenuAdminMenu<\/li>\n<li>WordPressAdminMenuAcmeAdminMenu<\/li>\n<li>WordPressAdminMenuViewsSettings<\/li>\n<li>WordPressAdminMenuViewsSettingsPartials<\/li>\n<\/ul>\n<p>Huomaa, ett\u00e4 koska <strong>acme-settings.php<\/strong> on teknisesti vain merkint\u00e4 hahmonnusvaihtoehtoja varten, sen ei v\u00e4ltt\u00e4m\u00e4tt\u00e4 tarvitse olla nimiavaruutta, koska se sis\u00e4ltyy sen hahmontavaan <strong>n\u00e4kym\u00e4\u00e4n<\/strong>.<\/p>\n<p>Siit\u00e4 huolimatta, jos pid\u00e4t asioiden pit\u00e4misest\u00e4 mahdollisimman j\u00e4rjestyksess\u00e4, on j\u00e4rkev\u00e4\u00e4 sijoittaa vain osa juuri sellaiseen hakemistoon.<\/p>\n<h2>Ent\u00e4 koodi?<\/h2>\n<p>Jos olet kiinnostunut n\u00e4kem\u00e4\u00e4n t\u00e4m\u00e4nkaltaisen koodin, harkitsen pienen laajennuksen kokoamista, joka n\u00e4ytt\u00e4\u00e4, kuinka t\u00e4m\u00e4 kaikki sopii yhteen. Loppujen lopuksi t\u00e4m\u00e4 on v\u00e4h\u00e4n korkeatasoista, eik\u00f6? Tarkoitan, ettei toteutusta ole.<\/p>\n<p>Toisaalta, jos t\u00e4m\u00e4 auttaa sinua osoittamaan oikean suunnan nykyist\u00e4 tai tulevaa projektia varten, se voi riitt\u00e4\u00e4.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Haluan puhua tavasta j\u00e4rjest\u00e4\u00e4 WordPress-asetusn\u00e4ytt\u00f6j\u00e4 sek\u00e4 logiikasta ett\u00e4 virtuaalisista organisaatiorakenteista.<\/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":[719,895,834,803,864],"tags":[1166],"class_list":["post-231153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-php-5","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231153","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=231153"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/236109"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}