{"id":231573,"date":"2023-01-08T09:50:00","date_gmt":"2023-01-08T06:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231573"},"modified":"2023-01-08T09:51:13","modified_gmt":"2023-01-08T06:51:13","slug":"registri-abonentide-ja-teenuste-kasutamine-wordpressis","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/registri-abonentide-ja-teenuste-kasutamine-wordpressis\/","title":{"rendered":"Registri, abonentide ja teenuste kasutamine WordPressis"},"content":{"rendered":"\n<p><strong>TL;DR:<\/strong> Minu arvates on registri, tellijate ja teenuste kasutamine WordPressi jaoks taustaprogrammip\u00f5histe pistikprogrammide ja utiliitide loomisel v\u00e4ga kasulik. See postitus kirjeldab, kuidas seda teha.<\/p>\n<hr \/>\n<p>P\u00e4rast aastatepikkust disainimustrite, objektorienteeritud programmeerimise ja WordPressiga t\u00f6\u00f6tamist tekivad kindlasti levinud viisid probleemide lahendamiseks.<\/p>\n<p>Nii saime alustuseks objektorienteeritud disainimustrid, nii et v\u00f5ib-olla on see WordPressi-keskne variatsioon.<\/p>\n<p>Kuigi olen kirjutanud sellistest asjadest nagu registrid eelmistes artiklites (ja sellistes, mis <a href=\"https:\/\/wordpress.mediadoma.com\/et\/registri-mustri-kasutamine-wordpressis\/\" title=\"pole isegi nii vanad\">pole isegi nii vanad<\/a> ), pole kunagi halb m\u00f5te sama teema uuesti l\u00e4bi vaadata, eriti kui on, mida eelmisele artiklile lisada.<\/p>\n<h2>Register, abonendid ja teenused<\/h2>\n<p>K\u00f5ik allpool kirjeldatud tuleb m\u00f5ista WordPressi pistikprogrammi kontekstis. See t\u00e4hendab, et see ei ole m\u00f5eldud muude raamistike, keelte, rakendustega t\u00f6\u00f6tamiseks ega muude mustritega kasutamiseks.<\/p>\n<p>Pidage seda seda lugedes meeles.<\/p>\n<hr \/>\n<p>Igatahes on nende objektit\u00fc\u00fcpide kombinatsiooni \u00fcldine idee, kui j\u00e4rgmine:<\/p>\n<ol>\n<li>Register k\u00e4sitleb k\u00f5iki tellijaid,<\/li>\n<li>Tellijad kuulavad WordPressi konkse (olemasolevaid v\u00f5i isegi kohandatud konkse),<\/li>\n<li>Teenused teevad tegelikku t\u00f6\u00f6d alati, kui tellija need v\u00e4lja saadab.<\/li>\n<\/ol>\n<p>Eesm\u00e4rk on see, et t\u00f6\u00f6 v\u00e4ljasaatmise eest vastutavate klasside registreerimiseks on \u00fcks koht. See on k\u00f5ik.<\/p>\n<p>Lisaks muudab see asjade eraldi hoidmise lihtsaks, nii et kui soovite oma teenuseid isoleeritult testida, on see palju lihtsam, kuna need pole tingimata WordPressiga tihedalt seotud. Ja kui need on, siis saate m\u00f5nitada andmeid, mis tuleb antud funktsiooni edastada, ja seej\u00e4rel hinnata tulemust.<\/p>\n<p>See ei ole siiski artikkel testimise kohta, nii et tagasi tegelike klasside juurde.<\/p>\n<h3>register<\/h3>\n<p>Definitsiooni j\u00e4rgi on registri eesm\u00e4rk asjadel silma peal hoida. Kui r\u00e4\u00e4kida selle mustri rakendamisest WordPressis, siis on m\u00f5te selles, et register saaks j\u00e4lgida tellijaid (mida m\u00e4\u00e4ratlen hiljem selles artiklis).<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158242-61e6dacccb19c.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-158242-61e6dacccb19c.png\" alt=\"Registri, abonentide ja teenuste kasutamine WordPressis\"><\/a><\/p>\n<p><a href=\"https:\/\/unsplash.com\/@redaquamedia?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Denny M\u00fclleri<\/a> foto saidil <a href=\"https:\/\/unsplash.com\/s\/photos\/register?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Unsplash<\/a><\/p>\n<p>Lisaks on idee selles, et kui saabub aeg, mis on teie pistikprogrammi \u00fclesehituse j\u00e4rgi t\u00f5en\u00e4oliselt erinev, on k\u00f5ik abonendid instantseeritud. Selle hetkeni soovite aga t\u00f5en\u00e4oliselt seda teha WordPressi eluts\u00fckli alguses.<\/p>\n<p>Sellegipoolest on siin n\u00e4ide abonentide registreerimise koodi kohta:<\/p>\n<pre><code>private $subscribers = [\n    AssetSubscriber::class,\n    \/\/ ...\n    DeletedUserSubscriber::class,\n];<\/code><\/pre>\n<p>J\u00e4rgmisena on siin funktsioon tellijate loomiseks.<\/p>\n<pre><code>public function run()\n{\n    array_map(\n        function ($subscriber) {\n            (new $subscriber())-&gt;subscribe();\n        },\n        $this-&gt;subscribers\n    );\n}<\/code><\/pre>\n<p>Need plokid v\u00f5ivad olla osa samast funktsioonist v\u00f5i olla eraldi, olenevalt teie vajadustest.<\/p>\n<h3>Tellijad<\/h3>\n<p>Nagu mainitud, saavad tellijad:<\/p>\n<ol>\n<li>Kuulake WordPressis teatud konksu<\/li>\n<li>Saatke teenus, et teha k\u00f5ik t\u00f6\u00f6d, mis on ette n\u00e4htud antud konksu jaoks.<\/li>\n<\/ol>\n<p>Seega eeldage hetkeks, et soovite midagi teha, kui kasutaja kustutatakse. Kui see konks juhtub, soovite luua teenuse abonendi kaudu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158242-61e6dad44a26f.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-158242-61e6dad44a26f.png\" alt=\"Registri, abonentide ja teenuste kasutamine WordPressis\"><\/a><\/p>\n<p><a href=\"https:\/\/unsplash.com\/@leecampbell?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Lee Campbelli<\/a> foto saidil <a href=\"https:\/\/unsplash.com\/s\/photos\/headphones?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Unsplash<\/a><\/p>\n<p>N\u00e4iteks:<\/p>\n<pre><code>class DeletedUserSubscriber\n{\n    public function subscribe()\n    {\n        (new DeletedUserService())-&gt;add('delete_user');\n    }\n}<\/code><\/pre>\n<p>Pange t\u00e4hele, et tellija on teenusest teadlik (kuigi ta ei s\u00f5ltu sellest, kuna see on lihtsalt vahendaja WordPressi ja teenuse vahel) ja m\u00e4\u00e4rab teenuse konksu, mida see k\u00e4ivitab.<\/p>\n<h3>Teenused<\/h3>\n<p>L\u00f5puks on teenused objektid, kes teevad pistikprogrammis kogu raske t\u00f5stmise. See t\u00e4hendab, et kui neil on vaja lugeda v\u00f5i kirjutada andmebaasi, failis\u00fcsteemi, v\u00f5rku, t\u00f6\u00f6delda andmeid jne, toimub see k\u00f5ik nende kontekstis.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-158242-61e6dadba8851.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-158242-61e6dadba8851.png\" alt=\"Registri, abonentide ja teenuste kasutamine WordPressis\"><\/a><\/p>\n<p><a href=\"https:\/\/unsplash.com\/@introspectivedsgn?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Erik<\/a> Mcleani foto saidil <a href=\"https:\/\/unsplash.com\/s\/photos\/service?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Unsplash<\/a><\/p>\n<p>Nad v\u00f5ivad olla teistest klassidest teadlikud, aga mitte. Nad v\u00f5ivad rakendada liidest v\u00f5i abstraktset klassi v\u00f5i mitte. See on t\u00f5esti v\u00e4ljaspool selle postituse ulatust. Asi on aga selles, et kasutades \u00fclaltoodud konksu n\u00e4itena, kui soovite midagi teha, kui kasutaja kustutatakse, siis teete seda teenuse sees.<\/p>\n<p>N\u00e4iteks:<\/p>\n<pre><code>class DeletedUserService\n{\n    public function add(string $hook)\n    {\n        add_action($hook, [$this, 'deletedUser'], 99, 1);\n    }\n\n    public function deletedUser(int $userId)\n    {\n        $user = get_userdata($userId);\n        if (false === $user) {\n            return;\n        }\n\n        \/\/ Do work with the user that's being deleted.   \n    }\n}<\/code><\/pre>\n<p>Ja sellega asi l\u00f5ppes. Kui teenus t\u00f6\u00f6tab, tagastatakse juhtimine WordPressile ja rakendus j\u00e4tkab t\u00e4itmist nagu tavaliselt.<\/p>\n<h3>K\u00f5ik koos n\u00fc\u00fcd<\/h3>\n<p>Eeldades, et teie pistikprogrammi jaoks on alglaadimisfail, mida enamik teeb, kuna see on koht, kus n\u00f5utav pistikprogramm on m\u00e4\u00e4ratletud, on vaja automaatlaadurit ja toimub pistikprogrammi enda k\u00e4ivitamine.<\/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>Registri, abonentide ja teenuste kasutamine on kasulik WordPressi taustaprogrammikesksete pistikprogrammide ja utiliitide loomisel. See postitus kirjeldab, kuidas seda teha.<\/p>\n","protected":false},"author":1,"featured_media":158243,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,894,842,802,863],"tags":[1165],"class_list":["post-231573","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-kood","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231573","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=231573"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231573\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/158243"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231573"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231573"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}