{"id":231020,"date":"2022-12-24T13:37:00","date_gmt":"2022-12-24T10:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231020"},"modified":"2022-12-24T13:41:26","modified_gmt":"2022-12-24T10:41:26","slug":"toeoeriistad-parema-wordpressi-koodi-kirjutamiseks-helilooja","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/toeoeriistad-parema-wordpressi-koodi-kirjutamiseks-helilooja\/","title":{"rendered":"T\u00f6\u00f6riistad parema WordPressi koodi kirjutamiseks: helilooja"},"content":{"rendered":"\n<p>Kuigi ma arvan, et selle sarja pealkiri ja artiklid on m\u00f5lema jaoks piisavalt selged, on selle sarjaga teisi asju, mida ma selle sarjaga ette v\u00f5tan, erinevalt teistest seni kirjutatud sarjadest.<\/p>\n<p>T\u00e4psemalt, kaks asja, mida ma \u00fcritan teha, on kaks:<\/p>\n<ol>\n<li>hoidke iga artikkel suhteliselt l\u00fchidalt (v\u00f5rreldes sellega, kuidas varasemad artiklid on olnud),<\/li>\n<li>keskenduge \u00fchele asjale korraga ja kirjeldage seda l\u00fchidalt.<\/li>\n<\/ol>\n<p>Kuna see on liikmesisu, siis ma ei pahanda, et see oleks pisut pikem kui tavaliselt, kuid ma ei taha ka, et see oleks nii pikk, et seda oleks raske j\u00e4lgida. Pigem oleks see l\u00fchike lugemine, milles on midagi praktilist, mida saate p\u00e4rast iga postituse lugemist rakendada.<\/p>\n<p>Ja \u00fcks asi, mis aitab parema WordPressi koodi kirjutamisel oluliselt kaasa, on helilooja.<\/p>\n<h2>Parem WordPressi kood koos heliloojaga<\/h2>\n<p>Kui olete seda ajaveebi kaua lugenud, siis teate, et ma olen Composeri f\u00e4nn (samas pole ma kaugeltki ainus WordPressis t\u00f6\u00f6tav inimene).<\/p>\n<p>Ja kuigi ma olen selle kohta materjali kirjutanud, pole ma kirjutanud midagi konkreetse eesm\u00e4rgiga, et saaksite \u00fche l\u00fchikese artikli lugemise l\u00f5puks sellega hakkama.<\/p>\n<p>Selle hetkeni peame tegema m\u00f5ningaid kompromisse: nimelt annan teile n\u00e4idiskonfiguratsioonifaili koos viisiga, kuidas korraldada teie pistikprogrammi kataloog. Seej\u00e4rel selgitan j\u00e4rgmises postituses m\u00f5nda helilooja funktsiooni.<\/p>\n<h3>Mis on helilooja?<\/h3>\n<p>Esiteks on oluline m\u00f5ista, mis on helilooja. Ja saidil esitatud m\u00e4\u00e4ratlust on lihtne ette lugeda, kas pole? See on PHP s\u00f5ltuvushaldur.<\/p>\n<h4>Aga esiteks, mis on s\u00f5ltuvus?<\/h4>\n<p>M\u00f5ne jaoks tekitab see siiski m\u00f5ned k\u00fcsimused:<\/p>\n<ul>\n<li>Mis on s\u00f5ltuvus?<\/li>\n<li>Miks ma pean neid haldama?<\/li>\n<\/ul>\n<p>Ja kui veidi s\u00fcveneda, v\u00f5ite avastada, et see on paketihaldur ja see t\u00f5statab lihtsalt samad k\u00fcsimused, v\u00e4lja arvatud juhul, kui asendate s\u00f5na &quot;s\u00f5ltuvus&quot; s\u00f5naga &quot;pakett&quot; ja oletegi tagasi seal, kus alustasite.<\/p>\n<p>Seega teen k\u00f5ik endast oleneva, et see oleks v\u00f5imalikult selge:<\/p>\n<p>S\u00f5ltuvus v\u00f5i pakett, tarkvara, mida teie kood kasutab. See v\u00f5ib olla miski, mille funktsionaalsus t\u00f6\u00f6tab k\u00e4itusajal, n\u00e4iteks <a href=\"http:\/\/docs.guzzlephp.org\/en\/stable\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">HTTP-p\u00e4ringute tegemise viis<\/a>, v\u00f5i see v\u00f5ib olla teek <a href=\"https:\/\/github.com\/spatie\/array-to-xml\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">massiivide teisendamiseks XML-i<\/a>.<\/p>\n<p>Composer muudab nende konkreetsete pakettide kaasamise teie teeki lihtsamaks, v\u00f5imaldades teil:<\/p>\n<ul>\n<li>laadige alla ja lisage pakett oma pistikprogrammi,<\/li>\n<li>laadib teie pistikprogrammi k\u00e4itamise ajal automaatselt,<\/li>\n<li>muutke pistikprogrammi jaoks vajaduse korral h\u00f5lpsaks pistikprogrammi loomine v\u00f5i sisse kutsumine.<\/li>\n<\/ul>\n<p>See t\u00e4hendab, et me ei pea oma koodibaasi katalooge risustama paljude k\u00e4sitsi lisatud failidega ja see t\u00e4hendab, et meil ei ole <strong>k\u00f5ikjal<\/strong> kasutus- v\u00f5i <strong>n\u00f5uet .<\/strong><\/p>\n<p>Neil on oma koht, millest r\u00e4\u00e4gin j\u00e4rgmises postituses, kuid neid ei pea automaatselt installima. Selle asemel haldab neid helilooja. Seega on s\u00f5ltuvushaldur osa selle eesm\u00e4rgist.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/parema-wordpressi-koodi-kirjutamine-sissejuhatus\/\" title=\"N\u00fc\u00fcd, kui olete selle installinud\">N\u00fc\u00fcd, kui olete selle installinud<\/a>, on teil konteksti.<\/p>\n<h3>Helilooja kasutamine<\/h3>\n<p>Selle konkreetse jaotise kirjutamine on m\u00f5nev\u00f5rra keeruline, kuna meil k\u00f5igil on erinevad vajadused, eks? Kuid v\u00e4hemalt saame k\u00f5ik \u00e4ra kasutada automaatlaadurit.<\/p>\n<p>See on midagi, mida me k\u00f5ik saame kasutada.<\/p>\n<p>Nii et ma teen j\u00e4rgmist:<\/p>\n<ol>\n<li>Seadistan pistikprogrammide kataloogi,<\/li>\n<li>Looge pistikprogrammi juhtimiseks vajalikud failid,<\/li>\n<li>Seadistage lihtne helilooja fail,<\/li>\n<li>Teostage see<\/li>\n<\/ol>\n<p>Ja siis ma lasen teil tulemusi n\u00e4ha. Tulevases postituses (v\u00f5i tulevastes seeriates) v\u00f5ime p\u00e4\u00e4seda kolmandate osapoolte teekidesse v\u00f5i muudesse funktsioonidesse.<\/p>\n<p>Aga kui mitte midagi muud, siis see n\u00e4itab teile, kuidas kasutada Composerit automaatlaaduri m\u00e4\u00e4ratlemiseks, et saaksite keskenduda koodi kirjutamisele, mitte aga sellele, kas klassid on kaasatud.<\/p>\n<h4>Pluginate kataloog<\/h4>\n<p>\u00dcldiselt struktureerin oma pistikprogrammid j\u00e4rgmiselt:<\/p>\n<ul>\n<li>seal on alglaadimisfail, mille loeb WordPress,<\/li>\n<li>seal on <strong>src<\/strong> kataloog, kus hoitakse k\u00f5iki katalooge ja PHP-faile,<\/li>\n<li>seal on tipptasemel <strong>varade<\/strong> kataloog, kus hoitakse pilte, JavaScripti faile ja Sassi faile,<\/li>\n<li>ja seal on <strong>m\u00fc\u00fcja<\/strong> kaust, mille on loonud Composer, mis sisaldab s\u00f5ltuvusi ja automaatlaadurit.<\/li>\n<\/ul>\n<p>Aeg-ajalt v\u00f5ib olla m\u00f5ni muu veider kaust, n\u00e4iteks kaust <strong>inc<\/strong> v\u00f5i <strong>lib<\/strong>, kuid see on praegu minu t\u00f6\u00f6t\u00fc\u00fcbi puhul v\u00e4ga ebaregulaarne. Ja seet\u00f5ttu ei hakka ma selle postituse p\u00e4rast muretsema.<\/p>\n<p>Selle asemel n\u00e4eb minu kataloog v\u00e4lja umbes selline.<\/p>\n<p>Tarnija <strong>kataloog<\/strong> puudub, kuna ma pole veel loonud helilooja faili, mida kasutatakse k\u00e4ivitamiseks. Aga seda n\u00e4eme enne postituse l\u00f5ppu.<\/p>\n<h4>N\u00e4idisfailid<\/h4>\n<p>Seadistame pistikprogrammis n\u00e4idisfaili. Ja kui ma \u00fctlen n\u00e4idist, siis pean silmas ka lihtsat.<\/p>\n<p>Sellel failil on \u00fcks eesm\u00e4rk: printige WordPressi sisselogimisel armatuurlauale s\u00f5num.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160226-61e707e186b99.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-160226-61e707e186b99.png\" alt=\"T\u00f6\u00f6riistad parema WordPressi koodi kirjutamiseks: helilooja\"><\/a><\/p>\n<p>Pidage siiski meeles, et selle eesm\u00e4rk ei ole n\u00e4idata, kuidas kirjutada h\u00e4sti \u00fcles ehitatud pistikprogrammi. Selle asemel n\u00e4idatakse, kuidas luua automaatlaadurit, et pistikprogrammi failid genereeritakse automaatselt.<\/p>\n<p>Seega n\u00e4eb pistikprogrammi alglaadimine v\u00e4lja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94e25b3c6b304d348b8f4a69b03091fd#file-00-sample-plugin-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\/**\n * The plugin bootstrap file\n *\n * This file is read by WordPress to generate the plugin information in the plugin\n * admin area. This file also includes all of the dependencies used by the plugin,\n * registers the activation and deactivation functions, and defines a function\n * that starts the plugin.\n *\n * @since             0.1.0\n * @package           SamplePlugin\n *\n * @wordpress-plugin\n * Plugin Name:       Sample Plugin\n * Description:       A sample plugin used for a blog post.\n * Version:           0.1.0\n * Author:            Tom McFarlin\n * Author URI:        https:\/\/tommcfarlin.com\n * License:           GPL-3.0+\n * License URI:       http:\/\/www.gnu.org\/licenses\/gpl-3.0.txt\n *\/\n\nnamespace SamplePlugin;\n\nuse SamplePluginMessenger;\n\n\/\/ This file called directly.\ndefined('WPINC') || die;\n\n\/\/ Include the autoloader.\nrequire_once __DIR__. '\/vendor\/autoload.php';\n\n\/\/ Start the machine.\n(new Messenger())-&gt;start();\n<\/code><\/pre>\n<p>Ja konkreetselt s\u00f5numi kuvamise eest vastutav fail n\u00e4eb v\u00e4lja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94e25b3c6b304d348b8f4a69b03091fd#file-01-messenger-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace SamplePlugin;\n\nclass Messenger\n{\n    \/**\n     * Subscribers the `adminNotices` function to the admin_notices hook in WordPress.\n     *\/\n    public function start()\n    {\n        add_action('admin_notices', [$this, 'adminNotices']);\n    }\n\n    \/**\n     * Displays the contents of the `message.html` file into the adminitrative notices\n     * area on the dashboard whenever the plugin is active.\n     *\/\n    public function adminNotices()\n    {\n        if ('dashboard' !== get_current_screen()-&gt;id) {\n            return;\n        }\n\n        include_once dirname(__FILE__). '\/Admin\/Views\/message.html';\n    }\n}\n<\/code><\/pre>\n<p>Ja kui teid huvitab HTML-fail, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94e25b3c6b304d348b8f4a69b03091fd#file-02-message-html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">on see ka lihtne<\/a> :<\/p>\n<pre><code>&lt;div class=\"notice notice-success is-dismissible\"&gt;\n    &lt;p&gt;This is a message from the &lt;strong&gt;Sample Plugin&lt;\/strong&gt;&lt;\/p&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Ma \u00fctlesin, et see on lihtne.<\/p>\n<h4>Helilooja konfiguratsioonifail<\/h4>\n<p>See konkreetne fail v\u00f5ib olla nii lihtne v\u00f5i keeruline, kui vaja. Selle postituse puhul j\u00e4tame selle lihtsaks. Selle postituse eesm\u00e4rk on lihtsalt anda sellele nimi, kirjeldus, litsents, autorid ja seej\u00e4rel automaatlaaduri seadistamine.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/94e25b3c6b304d348b8f4a69b03091fd#file-03-composer-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Heitke pilk siia<\/a> ja siis ma selgitan, mida n\u00e4ete selle all:<\/p>\n<pre><code>{\n    \"name\": \"tommcfarlin\/sample-plugin\",\n    \"description\": \"A sample plugin used for a blog post.\",\n    \"type\": \"wordpress-plugin\",\n    \"license\": \"GPL-3.0-or-later\",\n    \"authors\": [\n      {\n        \"name\": \"Tom McFarlin\",\n        \"email\": \"tom@tommcfarlin.com\",\n        \"homepage\": \"https:\/\/tommcfarlin.com\"\n      }\n    ],\n      \"autoload\": {\n        \"psr-4\": {\n          \"SamplePlugin\": \"src\/\"\n        }\n      }\n  }<\/code><\/pre>\n<p>Esiteks peaks nimi, kirjeldus, t\u00fc\u00fcp ja litsents olema piisavalt kergesti j\u00e4lgitavad. Ka autoripiirkond on otsekohene.<\/p>\n<p>Autoload on valdkond, mille p\u00e4rast oleme praegu mures. See peaks olema \u00fcsna selge.<\/p>\n<p>L\u00fchidalt, meil on <strong>PSR4<\/strong> jaoks direktiiv, \u00a0mille kohta saate rohkem lugeda ja kus siis nimeruum asub. Nii et \u00fclaltoodud n\u00e4ites asub k\u00f5ik nimeruumis SamplePlugin <strong>kaustas<\/strong> <strong>src.\u00a0<\/strong><\/p>\n<p>See annab automaatlaadurile teada, kust teatud faile otsida. Ja meie puhul otsib see lihtsalt <strong>Messengeri<\/strong> klassi.<\/p>\n<h4>Jooksev helilooja<\/h4>\n<p>N\u00fc\u00fcd, kui oleme k\u00e4sitlenud Composeri konfiguratsioonifaili p\u00f5hit\u00f5desid, on aeg see tegelikult k\u00e4ivitada. Pidage meeles, et teie pistikprogrammide kataloog peaks v\u00e4lja n\u00e4gema umbes selline:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160226-61e707e55e20b.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-160226-61e707e55e20b.png\" alt=\"T\u00f6\u00f6riistad parema WordPressi koodi kirjutamiseks: helilooja\"><\/a><\/p>\n<p>Sisestage terminalis <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94e25b3c6b304d348b8f4a69b03091fd#file-04-run-composer-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine k\u00e4sk<\/a> :<\/p>\n<p>Ja sa peaksid n\u00e4gema midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160226-61e707e92efb9.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-160226-61e707e92efb9.png\" alt=\"T\u00f6\u00f6riistad parema WordPressi koodi kirjutamiseks: helilooja\"><\/a><\/p>\n<p>Eeldusel, et k\u00f5ik on h\u00e4sti l\u00e4inud, peaksite saama WordPressi sisse logida ja pistikprogrammi aktiveerida.<\/p>\n<h4>N\u00e4hes seda k\u00f5ike koos<\/h4>\n<p>Kui pistikprogramm on aktiveeritud, saate navigeerida oma saidi armatuurlauale. Seal peaksite n\u00e4gema loobutavat teadet, mis n\u00e4eb v\u00e4lja t\u00e4pselt selline, nagu n\u00e4gime postituse alguses:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160226-61e707e186b99.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-160226-61e707e186b99.png\" alt=\"T\u00f6\u00f6riistad parema WordPressi koodi kirjutamiseks: helilooja\"><\/a><\/p>\n<p>Kui olete nii kaugele j\u00f5udnud, siis on k\u00f5ik korras! Vastasel juhul kontrollige oma s\u00fcntaksit, et veenduda, et k\u00f5ik on korras. Kui midagi on valesti, poleks te t\u00f5en\u00e4oliselt nii kaugele j\u00f5udnud ja eeldades, et teil on p\u00f5hilised <a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vealogide-lugemine-ja-moistmine-1-osa\/\" title=\"silumiskonstandid m\u00e4\u00e4ratud\">silumiskonstandid m\u00e4\u00e4ratud<\/a>, n\u00e4ete t\u00f5en\u00e4oliselt, kus probleem on.<\/p>\n<h2>See pole veel k\u00f5ik<\/h2>\n<p>Composeris on palju muudki ja soovitan tungivalt lugeda selle dokumentatsiooni. M\u00f5nda neist k\u00e4sitlen, kui vaatan t\u00f6\u00f6riistu, mida kavatsen selles sarjas hiljem k\u00e4sitleda, kuid praegu soovitan tutvuda m\u00f5ne tavaga.<\/p>\n<p>Oh! Ja ma ei soovita hankija kataloogi oma hoidlasse kontrollida. Sellest v\u00f5ib hiljem saada tohutu kataloog ja see v\u00f5ib kahjustada kogu Composeri eesm\u00e4rki.<\/p>\n<p>J\u00e4rgmises postituses r\u00e4\u00e4gin, miks. M\u00f5ned inimesed teevad seda ja see on okei, ja ma olen seda varem teinud, kuid on oluline, et oleksite seda tehes m\u00f5istlik.<\/p>\n<p>Viga, et ei tee seda. Ja miks ma selgitan j\u00e4rgmises postituses.<\/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>V\u00e4ga lihtne sissejuhatus Composerile, mis selgitab selle eesm\u00e4rki ja seda, kuidas saate seda automaatse laadimise eeliseks kasutada.<\/p>\n","protected":false},"author":1,"featured_media":236343,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,863],"tags":[1165],"class_list":["post-231020","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231020"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231020\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236343"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}