{"id":230894,"date":"2022-12-20T18:08:00","date_gmt":"2022-12-20T15:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230894"},"modified":"2022-12-07T10:15:37","modified_gmt":"2022-12-07T07:15:37","slug":"wordpressi-vidinad-uembertoeoetamine-12-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-uembertoeoetamine-12-osa\/","title":{"rendered":"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 12. osa"},"content":{"rendered":"\n<p>Mis puutub WordPressi vidina katlaplaadi \u00fcmbert\u00f6\u00f6tamisse \u2013 eriti arvestades seda, kui kaugele oleme p\u00e4rast projekti kaheksa aastat tagasi alustamist j\u00f5udnud \u2013 oleme teinud palju t\u00f6\u00f6d.<\/p>\n<p>Oleme viinud selle palju kaasaegsemale standardile ja muudame sellega t\u00f6\u00f6tamise palju lihtsamaks, nii et tulevaste vidinate loomine peaks olema lihtsam. Ja see ei tulene ainult katlaplaadi standardist, vaid objektorienteeritud standardist, nii et hooldus- ja koodikvaliteet on k\u00f5rgem.<\/p>\n<p>Viimases postituses l\u00f5petasime suure osa haldusala t\u00f6\u00f6st ja oleme valmis alustama t\u00f6\u00f6d kasutajaliidese koodi kallal.<\/p>\n<p>Me \u00fctlesime:<\/p>\n<blockquote>\n<p>J\u00e4rgmisena vaatame sisu renderdamist esiotsas. Oleme Boilerplate&#8217;i \u00fcmbert\u00f6\u00f6tlemise l\u00f5pule j\u00f5udmas, kuid veel on vaja natuke teha, enne kui oleme valmis \u00fchendama selle koodibaasi p\u00f5hiharuga.<\/p>\n<\/blockquote>\n<p>Nii et selles postituses j\u00e4tkame seal. N\u00fc\u00fcd, kui olete seda siiani j\u00e4lginud, peaks teil arendusharust k\u00f5ik vajalik olema.<\/p>\n<p>Kui ei, siis t\u00f5mmake see kindlasti v\u00e4lja, sest see on koht, kus me postituse \u00fclej\u00e4\u00e4nud osas \u00fcles v\u00f5tame.<\/p>\n<h2>WordPressi vidina katlaplaat: \u00fcmberkujundamine, 12. osa<\/h2>\n<p>N\u00fc\u00fcd, mis puudutab esiosa, on lihtne pidada esiotsaks k\u00f5ike, mida kasutaja enda ees n\u00e4eb, olenemata sellest, kas see asub haldusalas v\u00f5i mitte.<\/p>\n<p>See seeria on aga selge, et jagame selle, mida kasutaja n\u00e4eb, saidi haldusala ja avalikkusele suunatud ala vahel.<\/p>\n<p>Seega t\u00f6\u00f6tame selle koodi ala kallal, mis annab kasutajale teavet saidi avalikul alal. Alustame lihtsalt teabe lugemisest ja selle kuvamisest.<\/p>\n<p>J\u00e4rgmises postituses vaatleme m\u00f5ne valiku osas t\u00f6\u00f6tamist tingimusliku loogikaga, et n\u00e4ha, kas meil on midagi vaja teha.<\/p>\n<p>Seda \u00f6eldes liigume koodi juurde.<\/p>\n<h3>Andmete kohta, mida me kuvame<\/h3>\n<p>Pidage meeles, et vidinal on praegu kolm asja, mis m\u00f5jutavad selle kuvamist.<\/p>\n<ol>\n<li>vidina pealkiri,<\/li>\n<li>vidina sisu,<\/li>\n<li>l\u00fcliti selle kohta, kas peaksime pealkirja kuvama v\u00f5i mitte<\/li>\n<\/ol>\n<p>Kolmas v\u00f5imalus on eelk\u00f5ige n\u00e4idata, kuidas kasutada teist t\u00fc\u00fcpi elemente. Sest tehniliselt, kui me ei tahaks vidina pealkirja n\u00e4idata, siis me lihtsalt ei paneks vidinasse midagi.<\/p>\n<p>Kuid ma arvan, et see aitab n\u00e4idata erinevate elementide t\u00fc\u00fcpide ja nende v\u00e4\u00e4rtuste praktilist (v\u00f5i poolpraktilist) kasutamist.<\/p>\n<p>Igatahes teame, et iga vidina eksemplari kohta salvestatakse andmed koos <strong>pealkirja<\/strong>, <strong>sisu<\/strong> ja <strong>kuvatava pealkirja<\/strong> nime ja ID-dega, nagu WordPress pakub.<\/p>\n<p>Seega kasutame v\u00e4\u00e4rtuste kuvamiseks neid oma esiotsa koodis.<\/p>\n<h3>Kuvamisfunktsioonide ettevalmistamine<\/h3>\n<p>Tavaliselt\u00a0 vastutab <strong>vidina<\/strong> funktsioon vidina v\u00e4ljundi kuvamise eest. Kuid \u00fcks asi, mida oleme p\u00fc\u00fcdnud teha, on jagada oma vidinaga seotud probleemid rohkem keskendunud klasside ja funktsioonide kogumiks.<\/p>\n<p>Esimene asi, mida tahame teha, on kirjutada <strong>WidgetDisplay<\/strong> klass, mis vastutab, nagu on ilmselge, vidina sisu kuvamise eest.<\/p>\n<p>Praegu h\u00f5lmab see tingimusteta pealkirja, sisu ja pealkirja lisamise v\u00f5i mitte kaasamise v\u00e4\u00e4rtust. WordPress teeb k\u00e4ttesaadavaks ka teatud sisu, n\u00e4iteks m\u00e4rgistuse, mis peaks ilmuma enne vidinat ja p\u00e4rast vidinat, seega lisame kindlasti ka selle.<\/p>\n<p>Aga k\u00f5igepealt <a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-00-widget-display-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00f5petame klassi<\/a> :<\/p>\n<pre><code>&lt;?php\n\nnamespace WordPressWidgetBoilerplateWordPress;\n\nclass WidgetDisplay\n{\n  private $widgetSlug;\n\n  public function __construct(string $widgetSlug)\n  {\n      $this-&gt;widgetSlug = $widgetSlug;\n  }\n\n  public function show($args, $instance)\n  {\n    \/\/ More to come\n  }\n}\n<\/code><\/pre>\n<p>P\u00e4rast seda peame veenduma, et kirjutame selle ka teistele klassidele. Esiteks lisame selle kindlasti <a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-01-widget-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">oma vidinaklassi<\/a> :<\/p>\n<pre><code>&lt;?php\npublic function widget($args, $instance)\n{\n    return $this-&gt;widgetDisplay-&gt;show($args, $instance);\n}<\/code><\/pre>\n<p>Ja siis <a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-02-widget-admin-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lisame selle WidgetAdmini klassi<\/a> (kuna siin asuvad vidina API p\u00f5hifunktsioonid \u2013 see lihtsalt delegeerib vastutuse \u00f5igele klassile):<\/p>\n<pre><code>&lt;?php\n\npublic function __construct($widgetSlug)\n{\n    parent::__construct($widgetSlug);\n    $this-&gt;widgetSerializer = new WidgetSerializer($this-&gt;getWidgetSlug());\n    $this-&gt;widgetDisplay = new WidgetDisplay($this-&gt;getWidgetSlug());\n}<\/code><\/pre>\n<p>Praegu me veel midagi ei kuva. Oleme l\u00e4hedal ja keskendume sellele varsti.<\/p>\n<h3>Andmete kuvamine<\/h3>\n<p>Eeldades, et saate \u00fclaltoodud koodi vigadeta lisada, on aeg kuvada vidina sisu.<\/p>\n<p>Saame seda teha mitmel erineval viisil alates lihtsast <strong>var_dump<\/strong> -st kuni sisu kasutajas\u00f5bralikumaks kuvamiseks. Ja ma olen palju rohkem viimase f\u00e4nn.<\/p>\n<p>Nii et teeme seda.<\/p>\n<p><strong>Lisage<\/strong> oma WidgetDisplay klassi <strong>kuvamisfunktsiooni<\/strong> <a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-04-widget-display-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j\u00e4rgmine kood<\/a> :<a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-04-widget-display-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><\/p>\n<pre><code>&lt;?php\npublic function show($args, $instance)\n{\n    include_once 'Views\/Widget.php';\n}<\/code><\/pre>\n<p>Ja siis v\u00f5ib malli vaade olla nii <a href=\"https:\/\/gist.github.com\/tommcfarlin\/caf46620cf110e5d55f4a302f1d5a471#file-03-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lihtne<\/a> :<\/p>\n<pre><code>&lt;div id=\"&lt;?php echo $args['id']; ?&gt;\"&gt;\n    &lt;h3 class=\"widget-title\"&gt;&lt;?php echo $instance['title']; ?&gt;&lt;\/h3&gt;\n    &lt;p&gt;&lt;?php echo $instance['content']; ?&gt;&lt;\/p&gt;\n    &lt;pre&gt;&lt;?php echo $instance['display-title']; ?&gt;&lt;\/pre&gt;\n&lt;\/div&gt;&lt;!-- #&lt;?php echo $args['id']; ?&gt;--&gt;<\/code><\/pre>\n<p>See tagab, et kogu sisu jaoks enne vidinat on \u00f5ige m\u00e4rgistus, vidina sisu ja sisu on korralikult renderdatud.<\/p>\n<p>J\u00e4llegi pidage meeles, et kuvame sisu, mida selle l\u00f5plikus versioonis ei ole, kuid me oleme selle l\u00e4hedal ja k\u00e4sitleme seda j\u00e4rgmises postituses.<\/p>\n<p>Soovitaksin m\u00e4ngida\u00a0 valikuga <strong>Kuva pealkiri<\/strong>, et n\u00e4ha, kuidas see meie pakutud m\u00e4rgistust arvestades esiotsas renderdab.<\/p>\n<p>Praegu peaks vidina v\u00e4ljund v\u00e4lja n\u00e4gema umbes selline:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-160763-61e7125f80aab.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-160763-61e7125f80aab.png\" alt=\"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 12. osa\" ><\/a><\/p>\n<p>Kuid see on k\u00f5ik, mida selles postituses k\u00e4sitleda.<\/p>\n<h2>L\u00f5plikku Refaktorisse<\/h2>\n<p>Viimane asi, mida me p\u00e4rast seda vaatame, on tingimusliku loogika karmistamine koos s\u00f5naga andmete vahem\u00e4llu salvestamise kohta (kuna me teeme seda juba varasemates postitustes).<\/p>\n<p>Praegu aga v\u00f5ite vabalt m\u00e4ngida sellega, mis meil siin on, ja koodiga, mida me pole kaasanud (nt mida saab kuvada enne v\u00f5i p\u00e4rast vidinat.<\/p>\n<p>Need on sellest n\u00e4itest teadlikult v\u00e4lja j\u00e4etud, kuid olenevalt teie tehtud t\u00f6\u00f6st ei pruugi neid alati v\u00e4lja j\u00e4tta.<\/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>T\u00f6\u00f6tame selle koodi ala kallal, mis renderdab kasutajale teavet saidi avalikul alal.<\/p>\n","protected":false},"author":1,"featured_media":234979,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,842,863],"tags":[1165],"class_list":["post-230894","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230894","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=230894"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230894\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/234979"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}