{"id":231449,"date":"2022-12-21T10:21:00","date_gmt":"2022-12-21T07:21:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231449"},"modified":"2022-12-21T10:21:22","modified_gmt":"2022-12-21T07:21:22","slug":"ehdotuksia-menettelysaeaennoestoen-jaerjestaemiseksi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/ehdotuksia-menettelysaeaennoestoen-jaerjestaemiseksi\/","title":{"rendered":"Ehdotuksia menettelys\u00e4\u00e4nn\u00f6st\u00f6n j\u00e4rjest\u00e4miseksi"},"content":{"rendered":"\n<p>Niin paljon kuin kirjoitan \u2013 ja olen sen fani \u2013 olio-ohjelmointi, en kirjoita paljoakaan ajasta, jolloin ty\u00f6skentelen <a href=\"https:\/\/en.wikipedia.org\/wiki\/Procedural_programming\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">prosessikoodipohjan<\/a> kanssa .<\/p>\n<blockquote>\n<p>Proseduuriohjelmointi on ohjelmointiparadigma, joka on johdettu strukturoidusta ohjelmoinnista, joka perustuu proseduurikutsun k\u00e4sitteeseen. Proseduurit, jotka tunnetaan my\u00f6s rutiineina, alirutiineina tai funktioina, sis\u00e4lt\u00e4v\u00e4t yksinkertaisesti sarjan suoritettavia laskennallisia vaiheita.<\/p>\n<\/blockquote>\n<p>Joskus tulen t\u00e4h\u00e4n jonkin projektin vaatimuksista, joskus se tulee projektista, jonka olen perinyt, tai joskus jostain muusta syyst\u00e4.<\/p>\n<p>Mielest\u00e4ni on t\u00e4rke\u00e4\u00e4, ett\u00e4 ohjelmoijana emme pid\u00e4 yht\u00e4 paradigmaa niin korkealla, ett\u00e4 v\u00e4lt\u00e4mme ty\u00f6skentelem\u00e4st\u00e4 muiden koodinkirjoitustapojen kanssa. Loppujen lopuksi koodin kirjoittaminen on pohjimmiltaan ongelman ratkaisemista.<\/p>\n<p>Ongelman ratkaisemista voidaan pit\u00e4\u00e4 toissijaisena.<\/p>\n<p>Siit\u00e4 huolimatta, aina kun ty\u00f6skentelen koodipohjan kanssa; Kuitenkin, se on kirjoitettu, yrit\u00e4n silti varmistaa, ett\u00e4 se on j\u00e4rjestetty yhten\u00e4isell\u00e4, mahdollisimman helposti seurattavalla tavalla ja sit\u00e4 voidaan yll\u00e4pit\u00e4\u00e4 ajan my\u00f6t\u00e4.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160742-61e711c032aea.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-160742-61e711c032aea.png\" alt=\"Ehdotuksia menettelys\u00e4\u00e4nn\u00f6st\u00f6n j\u00e4rjest\u00e4miseksi\"><\/a><\/p>\n<p>Ajattelin kertoa, kuinka suhtaudun WordPress-laajennusten kirjoittamiseen proseduuriohjelmoinnin ja olioohjelmoinnin avulla ja miten j\u00e4rjest\u00e4n prosessikoodin.<\/p>\n<p>Jos ei muuta, ehk\u00e4 t\u00e4m\u00e4 antaa sinulle ideoita nykyiseen tai tulevaan projektiin.<\/p>\n<h2>J\u00e4rjest\u00e4misen menettelys\u00e4\u00e4nn\u00f6st\u00f6<\/h2>\n<p>Proseduurikoodin kanssa ty\u00f6skentelyss\u00e4 on paljon mahdollisuuksia sis\u00e4llytt\u00e4\u00e4 melkein kaikki yhteen monoliittiseen tiedostoon.<\/p>\n<p>En hyv\u00e4ksy t\u00e4t\u00e4 l\u00e4hestymistapaa, koska se vaikeuttaa tiedostossa olevan sis\u00e4ll\u00f6n l\u00f6yt\u00e4mist\u00e4 (ainakin jos olet juuri tulossa projektiin).<\/p>\n<p>T\u00e4t\u00e4 varten teen yleens\u00e4 n\u00e4it\u00e4 asioita.<\/p>\n<ol>\n<li><strong>Erilliset toiminnot ja suodattimet<\/strong>. Tyypillisesti teen kaikki toiminnot ja sijoitan ne yhteen tiedostoon ja otan kaikki suodattimet ja sijoitan ne toiseen tiedostoon. On my\u00f6s mahdollista jakaa n\u00e4m\u00e4 tiedostot edelleen alihakemistoihin (ellei my\u00f6s nimiavaruuksiin) niiden painopistealueiden perusteella. Esimerkiksi kaikki hallinta-alueeseen liittyv\u00e4t toiminnot voivat menn\u00e4 <strong>j\u00e4rjestelm\u00e4nvalvojan<\/strong> alihakemistoon.<\/li>\n<li><strong>Kirjoita virheenkorjaustiedosto<\/strong>. Yleens\u00e4 sis\u00e4llyt\u00e4n laajennukseen yksinkertaisen virheenkorjauskomentosarjan, jotta voin helposti n\u00e4ytt\u00e4\u00e4 virheenkorjaustiedot n\u00e4yt\u00f6ll\u00e4, kirjoittaa virheenkorjauslokitiedostoon tai kirjoittaa molempiin. T\u00e4m\u00e4 voi olla k\u00e4tev\u00e4, jos ei muuta, mutta se auttaa tarjoamaan tavan n\u00e4hd\u00e4 helposti mit\u00e4 tapahtuu ilman, ett\u00e4 sinun tarvitsee <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/xdebugin-kaeyttoe-valetin-ja-wordpressin-kanssa\/\" title=\"k\u00e4ynnist\u00e4\u00e4 Xdebugia\">k\u00e4ynnist\u00e4\u00e4 Xdebugia<\/a> ja k\u00e4yd\u00e4 l\u00e4pi koodia (ellei kyseess\u00e4 ole monimutkaisempi ongelma).<\/li>\n<li><strong>Autoloader<\/strong>. Jos k\u00e4yt\u00e4t prosessikoodia, et ehk\u00e4 k\u00e4yt\u00e4 <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/nimitilat-ja-automaattinen-lataus-wordpressissae\/\" title=\"nimiavaruuksia\">nimiavaruuksia<\/a> ollenkaan, mutta jos k\u00e4yt\u00e4t, sis\u00e4llyt\u00e4n mukaan my\u00f6s automaattisen latausohjelman, jonka olen kirjoittanut tiedostojen automaattisen sis\u00e4llytt\u00e4misen helpottamiseksi. T\u00e4m\u00e4 on erilainen kuin automaattinen latausohjelma <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/saeveltaejae-wordpressille-osa-1\/\" title=\"kuin Composer luo\">kuin Composer luo<\/a>, mutta se tekee silti saman asian.<\/li>\n<\/ol>\n<p>On selv\u00e4\u00e4, ett\u00e4 yll\u00e4 olevissa suosituksissa ei ole mit\u00e4\u00e4n luonnostaan \u200b\u200bmonimutkaista. Itse asiassa sanoisin, ett\u00e4 mik\u00e4 tahansa edell\u00e4 mainituista, varsinkin ensimm\u00e4inen askel, voi parantaa huomattavasti menettelykoodin hallittavuutta.<\/p>\n<h2>P\u00e4\u00e4laajennustiedosto<\/h2>\n<p>Jos p\u00e4\u00e4t\u00e4t tehd\u00e4 kaikki edell\u00e4 mainitut, liit\u00e4nn\u00e4isen bootstrap-tiedoston lopullisen version pit\u00e4isi olla todella yksinkertainen. Itse asiassa se voi n\u00e4ytt\u00e4\u00e4 joltain n\u00e4in <a href=\"https:\/\/gist.github.com\/tommcfarlin\/777bb0180968134a3c40ebecb241d2ad\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">yksinkertaiselta<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Plugin Name: Acme Plugin\n * Plugin URI:  https:\/\/acmeplugins.com\/acme\n * Description: This is the plugin description.\n * Version:     1.0.0\n * Author:      Acme Plugins Co.\n * Author URI:  https:\/\/acmeplugins.com\/acme\n * License:     GPL-3.0+\n * License URI: http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\n * @since   1.0.0\n * @package Acme\n *\/\n\nnamespace Acme;\n\ndefined( 'WPINC') || die;\n\n\/\/ Include the custom autoloader.\nrequire_once __DIR__. '\/inc\/autoload.php';\n\n\/\/ Include action and filters.\nrequire_once __DIR__. '\/inc\/actions.php';\nrequire_once __DIR__. '\/inc\/filters.php';\n<\/code><\/pre>\n<p>T\u00e4m\u00e4 taas edellytt\u00e4\u00e4, ett\u00e4 noudatat kaikkia kolmea suositusta. Jos ei, toteutus voi vaihdella.<\/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>Kuinka kirjoitan WordPress-laajennuksia k\u00e4ytt\u00e4m\u00e4ll\u00e4 prosessiohjelmointia verrattuna olioohjelmointiin ja miten j\u00e4rjest\u00e4n prosessikoodia.<\/p>\n","protected":false},"author":1,"featured_media":235594,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[719,917,843,864],"tags":[1166],"class_list":["post-231449","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kehittaejae","category-muut","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231449","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=231449"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/231449\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/235594"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=231449"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=231449"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=231449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}