{"id":230786,"date":"2022-12-18T14:33:00","date_gmt":"2022-12-18T11:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230786"},"modified":"2022-12-18T14:33:59","modified_gmt":"2022-12-18T11:33:59","slug":"wordpressi-vidinad-uembertoeoetamine-6-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-uembertoeoetamine-6-osa\/","title":{"rendered":"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 6. osa"},"content":{"rendered":"\n<p>Peaksite olema h\u00e4sti kursis WordPressi vidina katlaplaadi \u00fcmbert\u00f6\u00f6tamisega. Kui ei, siis soovitan seriaaliga tutvuda j\u00e4rgmiselt:<\/p>\n<ul>\n<li>lugedes <a href=\"https:\/\/tommcfarlin.com\/wordpress-widgets-part-5\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eelmist postitust<\/a> ,<\/li>\n<li>v\u00f5i lugedes <a href=\"https:\/\/tommcfarlin.com\/tag\/wordpress-widgets-api\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kogu seeriat<\/a> kuni selle hetkeni,<\/li>\n<li>ja vaadates <a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/tree\/develop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">projekti<\/a> arendusharu GitHubis.<\/li>\n<\/ul>\n<p>Mis puutub koodibaasi, siis oleme praegu heas kohas. Oleme hakanud suurt osa koodist \u00fcmber kujundama v\u00e4iksemateks, rohkem keskendunud klassideks. Ja me oleme just seadistanud registri, et saaksime alustada t\u00f6\u00f6d objektide esinemisjuhtudega kogu pistikprogrammis, ilma et oleks vaja liigset sidumist.<\/p>\n<p>Kuid endiselt on probleem, millega me silmitsi seisame ja see k\u00e4sitleb nimeruume ja automaatset laadimist. <a href=\"https:\/\/wordpress.mediadoma.com\/et\/nimeruumid-ja-automaatne-laadimine-wordpressis\/\" title=\"Ma olen sellest paar aastat tagasi\">Ma olen sellest paar aastat tagasi<\/a> natuke r\u00e4\u00e4kinud, kuid mitte nii, nagu see on seotud heliloojaga.<\/p>\n<p>Ja seda me selles postituses vaatlemegi.<\/p>\n<h2>WordPressi vidina katlaplaat: \u00fcmbert\u00f6\u00f6tamine, 6. osa<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-uembertoeoetamine-2-osa\/\" title=\"Selle sarja teises postituses\">Selle sarja teises postituses<\/a> hakkasime r\u00e4\u00e4kima heliloojast. Kui k\u00fcsite enamiku PHP arendajate k\u00e4est (sh neilt, kes t\u00f6\u00f6tavad WordPressiga), kuulete t\u00f5en\u00e4oliselt, et Composer on paketihaldur v\u00f5i s\u00f5ltuvushaldur.<\/p>\n<p>L\u00fchidalt, see on viis, kuidas saame oma projekti kaasata kolmandate osapoolte teegid ja seej\u00e4rel kasutada nende funktsioone (nii et me ei pea selleks oma koodi kirjutama).<\/p>\n<p>Kuid on veel \u00fcks funktsioon, mida Composer pakub ja mis on tohutult kasulik, eriti kui kasutate palju klasse <strong>ega<\/strong> soovi kogu koodibaasis kasutada n\u00f5udeid_once.<\/p>\n<p>Ja see on automaatlaadur.<\/p>\n<h3>Autoloader m\u00e4\u00e4ratletud<\/h3>\n<p>Otse <a href=\"https:\/\/getcomposer.org\/doc\/01-basic-usage.md#autoloading\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">juhendist:<\/a><\/p>\n<blockquote>\n<p>Teekide jaoks, mis m\u00e4\u00e4ravad automaatse laadimise teabe, loob Composer <code>vendor\/autoload.php<\/code>faili. Saate selle faili lihtsalt kaasata ja hakata kasutama klasse, mida need teegid pakuvad, ilma lisat\u00f6\u00f6ta.<\/p>\n<\/blockquote>\n<p>Kui olete koodi seni j\u00e4lginud, n\u00e4ete, et tegelikult kasutame juba Composeri loodud automaatset laadijat.<\/p>\n<p>Esiteks m\u00e4\u00e4ratlesime <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-00-composer-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vajaliku konfiguratsiooni<\/a> :<\/p>\n<pre><code>{\n    \"name\": \"wordpress-widget-boilerplate\/wordpress-widget-boilerplate\",\n    \"description\": \"An organized, maintainable boilerplate for building widgets using WordPress best practices.\",\n    \"type\": \"wordpress-plugin\",\n    \"license\": \"GPL-3.0-or-later\",\n    \"homepage\": \"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\",\n    \"authors\": [\n      {\n        \"name\": \"Tom McFarlin\",\n        \"email\": \"tom@pressware.co\",\n        \"homepage\": \"https:\/\/pressware.co\"\n      }\n    ],\n    \"support\": {\n      \"issues\": \"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/issues\"\n    },\n    \"config\": {\n      \"preferred-install\": \"dist\",\n      \"platform\": {\n          \"php\": \"7.1\"\n      }\n    },\n    \"repositories\": [\n      {\n        \"type\": \"composer\",\n        \"url\": \"https:\/\/wpackagist.org\"\n      }\n    ],\n    \"require\": {\n      \"php\": \"7.1\",\n      \"composer\/installers\": \"^1.4\"\n    },\n    \"require-dev\": {\n        \"friendsofphp\/php-cs-fixer\": \"^2.13.1\",\n        \"jakub-onderka\/php-parallel-lint\": \"^1.0.0\",\n        \"phpmd\/phpmd\": \"^v2.6.0\",\n        \"nikic\/php-parser\": \"^4.0\",\n        \"ocramius\/proxy-manager\": \"^2.0.0\",\n        \"phpro\/grumphp\": \"^0.13.1\"\n    },\n    \"scripts\": {\n      \"test\": [\n        \".\/vendor\/bin\/grumphp run\"\n      ]\n    },\n    \"minimum-stability\": \"stable\"\n  }<\/code><\/pre>\n<p>Seej\u00e4rel <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-01-plugin-boostrap-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hakkasime seda lisama pistikprogrammi alglaadimisribale<\/a> (mille me t\u00e4na l\u00f5petame):<\/p>\n<pre><code>&lt;?php\n\n\/\/ Include the autoloader.\n\/\/ TODO: Note this has not yet been defined.\nrequire_once __DIR__. '\/inc\/autoload.php';\n<\/code><\/pre>\n<p>Kuid siin on probleem: kuidas laadida just neid klasse, mida levitamiseks vajame?<\/p>\n<p>Teisis\u00f5nu: me kasutame arenduses palju teeke, et tagada kvaliteetse ja standarditele vastava koodi kirjutamine. Kuid me ei taha jagada 10 MB andmeid neile, kes meie projekti kasutavad.<\/p>\n<p>Selle asemel peame kaasama ainult vajalikud failid, eks? Ja selleks peame tagama, et loome automaatlaaduri, mille saame lisada ja mis teeb just seda.<\/p>\n<p>Esiteks n\u00e4itan teile <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-02-composer-distribution-command-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">k\u00e4sku<\/a> ja seej\u00e4rel selgitan, mida see k\u00f5ik teeb:<\/p>\n<pre><code>$ composer install --no-dev --no-ansi --no-interaction --optimize-autoloader --no-progress --prefer-dist<\/code><\/pre>\n<p>See loob just selle, mida vajame, et meie projekt tootmiskeskkonnas toimiks. Iga lipp teeb j\u00e4rgmist.<\/p>\n<ul>\n<li><strong>helilooja installimine<\/strong>. See lihtsalt installib k\u00f5ik s\u00f5ltuvused. Kui teil on hankijate kataloogis neid juba mitu, eemaldab see k\u00f5ik, v\u00e4lja arvatud need, mis on vajalikud.<\/li>\n<li><strong>no-dev<\/strong>. See takistab Composeril installimast pakette oma konfiguratsioonifailide jaotisesse request <strong>-dev (nimelt s\u00f5ltuvused, mida me GrumPHP-ga kasutame).<\/strong><\/li>\n<li><strong>no-ansi.<\/strong> See hoiab \u00e4ra ANSI v\u00e4ljundi esinemise. V\u00f5ib-olla te ei hooli selle k\u00e4ivitamisest v\u00f5i mitte. Kui valite teatud t\u00fc\u00fcpi automaatse juurutamise, kasutage seda; vastasel juhul v\u00f5ib selle k\u00e4sust v\u00e4lja j\u00e4tta.<\/li>\n<li><strong>interaktsiooni puudumine<\/strong>. See on veel \u00fcks lipp, mida kasutatakse spetsiaalselt keskkondade jaoks, kus soovite projekti automaatselt \u00fcles ehitada ja te ei pea tegelema k\u00fcsimuste, v\u00e4ljundi ja muu sellisega.<\/li>\n<li><strong>optimeeri-automaatlaadur<\/strong>. L\u00fchidalt, see loob kiirema automaatlaaduri. Olenevalt teie projekti suurusest v\u00f5ib selle k\u00e4ivitamine veidi aega v\u00f5tta, kuid see tasub t\u00f6\u00f6 k\u00e4ivitamisel \u00e4ra.<\/li>\n<li><strong>edenemata<\/strong>. See peidab edenemisriba terminalis kuvamise eest. V\u00f5ib-olla soovite seda n\u00e4ha ja kui jah, siis see on suurep\u00e4rane; m\u00f5ned keskkonnad ei pruugi aga teatud m\u00e4rke (nt tagasil\u00fckkeklahvi) h\u00e4sti k\u00e4sitleda.<\/li>\n<li><strong>eelista-dist<\/strong>. See tagab, et installitud paketid tehakse nii, kasutades levitamisversiooni (v\u00f5rreldes millegi v\u00e4hem stabiilsega).<\/li>\n<\/ul>\n<h4>Kas olete endiselt huvitatud?<\/h4>\n<p>Kui olete t\u00f5esti huvitatud automaatlaaduri optimeerimisest v\u00e4ljaspool seda postitust h\u00f5lmavate projektide jaoks, siis soovitan lugeda <a href=\"https:\/\/getcomposer.org\/doc\/articles\/autoloader-optimization.md\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">seda lehte<\/a> Composeri dokumentatsioonist. See ei kuulu meie siin tehtavasse valdkonda, kuid see v\u00f5ib olla kasulik muu t\u00f6\u00f6 puhul, mis teil praegu on v\u00f5i mida teete tulevikus.<\/p>\n<h2>Kuidas see katlaplaadil v\u00e4lja n\u00e4eb?<\/h2>\n<p>Kui t\u00f6\u00f6tate kohalikus masinas Boilerplate&#8217;iga, v\u00f5ite n\u00e4ha midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161015-61e719e23bf2d.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-161015-61e719e23bf2d.png\" alt=\"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 6. osa\"><\/a><\/p>\n<p>Kui aga k\u00e4ivitate \u00fclaltoodud k\u00e4su, n\u00e4ete midagi sellist:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161015-61e719e5afd5a.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-161015-61e719e5afd5a.png\" alt=\"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 6. osa\"><\/a><\/p>\n<p>See on suur erinevus ja see on v\u00e4ike projekt. Kujutage ette, et teete midagi palju suuremat, mis hakkab tootmises k\u00e4ima.<\/p>\n<p>Kogemusest r\u00e4\u00e4kides v\u00f5in teile \u00f6elda, et projektid v\u00f5ivad kiiresti j\u00f5uda 20 MB v\u00f5i enama s\u00f5ltuvuseni, kui kasutate mitmesuguseid kolmanda osapoole teeke n\u00e4iteks logimiseks, HTTP-p\u00e4ringuteks ja koodikvaliteedi t\u00f6\u00f6riistadeks.<\/p>\n<h2>Kas lisame oma hankijate kataloogi?<\/h2>\n<p>Inimesed \u00fctlevad sageli, et te ei tohiks hankija kataloogi allika juhtimisse kaasata ja m\u00f5juval p\u00f5hjusel: see v\u00f5ib olla tohutu.<\/p>\n<p>Isegi helilooja dokumentatsioon <a href=\"https:\/\/getcomposer.org\/doc\/faqs\/should-i-commit-the-dependencies-in-my-vendor-directory.md\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">r\u00e4\u00e4gib sellest:<\/a><\/p>\n<blockquote>\n<p>Parim tava on lasta k\u00f5igil arendajatel kasutada s\u00f5ltuvuste installimiseks Composerit. Sarnaselt tuleks koostamisserverit, CI-d, juurutust\u00f6\u00f6riistu jne kohandada Composeri k\u00e4itamiseks projekti alglaadimise osana.<\/p>\n<\/blockquote>\n<p>Mida me siis tegema peaksime? Meil on vaja automaatlaadurit ja teatud s\u00f5ltuvusi, sest meie kasutajad ei tea, et meie teose allalaadimisel k\u00e4ivitatakse (ega peaks ka k\u00e4ima!) Composer.<\/p>\n<p>WordPressi olemuse ja meie tehtava t\u00f6\u00f6 t\u00f5ttu peame hankijate kataloogi siduma, kuid ainult v\u00e4ga teatud n\u00f5uetega.<\/p>\n<ol>\n<li>Loome haru, mida kasutatakse v\u00e4ljalaskmiseks (nimetame seda loominguliselt <strong>v\u00e4ljalaskmiseks<\/strong> ja saame sellesse <strong>arenduse<\/strong> liita, kui vaja).<\/li>\n<li>Veendume, et hankija kataloog ei kuulu gitignore&#8217;i faili; aga tagame, et m\u00fc\u00fcja kataloogis olevaid .git katalooge ignoreeritakse (see v\u00f5ib siiski v\u00f5tta palju ruumi).<\/li>\n<\/ol>\n<p>Nii et teeme iga sammu ja vaatame, kuidas see v\u00e4lja n\u00e4eb, kui oleme l\u00f5petanud.<\/p>\n<h3>V\u00e4ljalaskeharu loomine<\/h3>\n<p>Uue haru loomiseks terminalist sisestage <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-03-create-a-branch-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine k\u00e4sk<\/a> :<\/p>\n<pre><code>$ git checkout -b release<\/code><\/pre>\n<p>See v\u00f5tab kogu koodi, mille kallal me t\u00f6\u00f6tame, ja loob sellega uue haru. Kuna see on haru, mida me kasutame, et toimida samamoodi nagu meie kasutajad (<strong>meistrist<\/strong> r\u00e4\u00e4gime tulevases postituses).<\/p>\n<p>Esmalt vaadake \u00fcle oma fail composer.json ja veenduge, et see sisaldaks j\u00e4rgmist.<\/p>\n<pre><code>\"autoload\": {\n    \"psr-4\": {\n        \"WordPressWidgetBoilerplate\": \"src\/\",\n        \"WordPressWidgetBoilerplateSubscriber\": \"src\/Subscriber\/\",\n        \"WordPressWidgetBoilerplateUtilities\": \"src\/Utilities\/\",\n        \"WordPressWidgetBoilerplateViews\": \"src\/Views\/\"\n    }\n},<\/code><\/pre>\n<p>N\u00fc\u00fcd peame veenduma, et k\u00e4ivitame \u00fclaltoodud k\u00e4su Composer veendumaks, et <strong>tarnija<\/strong> kataloogis pole midagi peale selle, mida vajame.<\/p>\n<pre><code>$ composer install --no-dev --no-ansi --no-interaction --optimize-autoloader --no-progress --prefer-dist<\/code><\/pre>\n<p>N\u00fc\u00fcd peame gitignore&#8217;i v\u00e4rskendama.<\/p>\n<h3>Uuendame seda, mida me ignoreerime<\/h3>\n<p>Ja kui olete nii sarja kui ka postitust seni j\u00e4lginud, siis teate, et see n\u00e4eb v\u00e4lja umbes selline (see v\u00f5ib sisaldada rohkem v\u00f5i v\u00e4hem, kuid peaks sisaldama v\u00e4hemalt seda).<\/p>\n<p>Minu jaoks n\u00e4eb see v\u00e4lja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-05-gitignore-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine<\/a> :<\/p>\n<pre><code>*.DS_Store\n*.log\nwp-config.php\nwp-content\/advanced-cache.php\nwp-content\/backup-db\/\nwp-content\/backups\/\nwp-content\/blogs.dir\/\nwp-content\/cache\/\nwp-content\/upgrade\/\nwp-content\/uploads\/\nwp-content\/mu-plugins\/\nwp-content\/wp-cache-config.php\nwp-content\/plugins\/hello.php\n\n\/.htaccess\n\/license.txt\n\/readme.html\n\/sitemap.xml\n\/sitemap.xml.gz\n\n\/vendor\/**\/.git\n\/vendor\/bin\ncomposer.lock\n<\/code><\/pre>\n<p>Olenevalt sellest, kas kasutate terminali v\u00f5i klienti, n\u00e4ete, et sisestamiseks on uusi faile (eriti hankija kataloogist). Nii et lisage need oma harusse.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/94d1c4d9f22431f12102051cff4300ab#file-06-pushing-a-new-branch-txt\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Seej\u00e4rel tehke oma muudatused sisse<\/a>. Kui t\u00f6\u00f6tate terminalis, peate v\u00f5ib-olla m\u00e4\u00e4rama j\u00e4rgmise:<\/p>\n<pre><code>$ git push --set-upstream origin release<\/code><\/pre>\n<p>Ja sellega peaks teie kood t\u00f6\u00f6tama ja olema saadaval GitHubis (v\u00f5i mis tahes allika juhtimisteenuses, mida kasutate). <a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/tree\/release\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Siin<\/a> n\u00e4ete, mis mul saadaval on .<\/p>\n<h2>Funktsionaalsuse lisamine<\/h2>\n<p>N\u00fc\u00fcd, kui meil on k\u00f5ik vajalikud osad paigas, on aeg hakata kasutama Composerit, automaatlaadurit, meie abstraktseid klasse ja registrit, et hakata WordPressi vidina katlaplaadile p\u00f5hifunktsioone lisama, et meil oleks oma t\u00f6\u00f6 jaoks midagi n\u00e4idata. .<\/p>\n<p>Kellel on uudishimu, siis praegu plaanin filiaalid sellisena korrastada:<\/p>\n<ul>\n<li><strong>Master<\/strong> on see, mis on saadaval k\u00f5igile, kes soovivad luua WordPressi vidina,<\/li>\n<li><strong>arendada<\/strong> on m\u00f5eldud ainult arendajatele, sealhulgas neile, kes teavad, kuidas kasutada heliloojat ja selles postituses k\u00e4sitletud teemasid,<\/li>\n<li><strong>v\u00e4ljalaset<\/strong> kasutatakse toimiva demo pakkumiseks.<\/li>\n<\/ul>\n<p>Praegu aga vaadake \u00fcle, mida selles postituses k\u00e4sitletakse, ja j\u00e4tkame sellega 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>Nimeruumide ja automaatse laadimisega seisame silmitsi probleemiga, mida me selles postituses vaatleme.<\/p>\n","protected":false},"author":1,"featured_media":223641,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718],"tags":[1165],"class_list":["post-230786","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230786","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=230786"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230786\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/223641"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}