{"id":230957,"date":"2022-12-22T18:50:00","date_gmt":"2022-12-22T15:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230957"},"modified":"2022-12-22T18:51:17","modified_gmt":"2022-12-22T15:51:17","slug":"wordpressi-vidinad-uembertoeoetamine-13-osa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-uembertoeoetamine-13-osa\/","title":{"rendered":"WordPressi vidinad: \u00fcmbert\u00f6\u00f6tamine, 13. osa"},"content":{"rendered":"\n<p>Oleme l\u00f5puks j\u00f5udnud WordPressi vidina katlaplaadi \u00fcmbert\u00f6\u00f6tamist k\u00e4sitleva seeria viimase postituse juurde. Selle postituse l\u00f5puks saame valmis oma koodi arendusharu ja oleme valmis k\u00f5ik p\u00f5hiharusse liitma.<\/p>\n<p>Siiski on veel natuke t\u00f6\u00f6d teha. <a href=\"https:\/\/wordpress.mediadoma.com\/et\/wordpressi-vidinad-uembertoeoetamine-12-osa\/\" title=\"Nimelt\">Nimelt<\/a> :<\/p>\n<blockquote>\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<\/blockquote>\n<p>Nii et need on kaks asja, mida me selles postituses vaatleme. T\u00e4psemalt vaatleme esiotsa tingimusloogika k\u00e4sitlemist ja seej\u00e4rel p\u00f5hilist vahem\u00e4llu rakendamist.<\/p>\n<h2>WordPressi vidina katlaplaat: \u00fcmberkujundamine, 13. osa<\/h2>\n<p>Enne kui j\u00f5uame \u00fcksikasjade viimasesse vooru, tahan veenduda, et kasutate <a href=\"https:\/\/github.com\/tommcfarlin\/WordPress-Widget-Boilerplate\/tree\/develop\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">koodi uusimat versiooni,<\/a> kuna see on ainus kord, mil minu arvates on h\u00e4davajalik, et kood oleks viimase muudatuste vooru jaoks valmis.<\/p>\n<p>Nii et kui teie arvutis kood ei t\u00f6\u00f6ta, on n\u00fc\u00fcd \u00f5ige aeg. Viimane koodit\u00fckk, mille kallal peame t\u00f6\u00f6tama, on \u00fcsna v\u00e4ike.<\/p>\n<p>Kuid on oluline veenduda, et kasutate uusimat versiooni. Nii et kui olete uusima koodi v\u00e4lja t\u00f5mmanud, oleme valmis selle l\u00f5petama.<\/p>\n<h3>1 Esiosa renderdamine<\/h3>\n<p>Tuletame meelde, et eelmises postituses renderdasime vidinate \u00fcldise teabe \u2013 pealkirja, sisu ja selle, kas pealkirja tuleks kuvada v\u00f5i mitte \u2013, kuvades lihtsalt esiotsas olevad v\u00e4\u00e4rtused.<\/p>\n<p>Kuid n\u00fc\u00fcd on aeg seadistada teave veendumaks, et me ei renderda teavet ainult vidina haldusala valikute p\u00f5hjal, vaid ka selle, kas teavet \u00fcldse on.<\/p>\n<p>Nii et alustame k\u00f5ige lihtsamast valikust: valik, mis v\u00f5imaldab meil pealkirja kuvamist \u00fcmber l\u00fclitada. Teisis\u00f5nu eeldame, et v\u00e4\u00e4rtused on t\u00e4idetud ja see valik on taustaprogrammis m\u00e4rgitud.<\/p>\n<p>Tuletame meelde, et <strong>Widget.php<\/strong> fail n\u00e4eb praegu v\u00e4lja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-00-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/*\n * This file is part of WordPress Widget Boilerplate\n * (c) Tom McFarlin &lt;tom@tommcfarlin.com&gt;\n *\n * This source file is subject to the GPL license that is bundled\n * with this source code in the file LICENSE.\n *\/\n?&gt;\n&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;\n<\/code><\/pre>\n<p>Nii et me hakkame k\u00f5igepealt selle osa \u00fcmber kujundama. Muidugi on seda suhteliselt lihtne tutvustada, eks? See t\u00e4hendab, et loogika on j\u00e4rgmine:<\/p>\n<ul>\n<li>Kui pealkirja kuvamise valik on m\u00e4rgitud, siis n\u00e4itame pealkirja; muidu me mitte.<\/li>\n<\/ul>\n<p>Seda saab lahendada lihtsa <strong>if<\/strong> &#8211; lausega, hinnates meil oleva <strong>kuvatava pealkirja suvandi v\u00e4\u00e4rtust.<\/strong> T\u00e4nu sellele, kuidas oleme funktsiooni selle seeria jooksul \u00fcles ehitanud, on selle valiku m\u00e4rkimisel v\u00f5imalus <strong>sisse l\u00fclitada<\/strong> ; muidu on see t\u00fchi.<\/p>\n<p>See t\u00e4hendab, et saame seadistada sellise tingimuse sama koodiga, mida oleme <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-01-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eespool jaganud<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/*\n * This file is part of WordPress Widget Boilerplate\n * (c) Tom McFarlin &lt;tom@tommcfarlin.com&gt;\n *\n * This source file is subject to the GPL license that is bundled\n * with this source code in the file LICENSE.\n *\/\n?&gt;\n&lt;div id=\"&lt;?php echo $args['id']; ?&gt;\"&gt;\n  &lt;?php if (isset($instance['display-title']) &amp;&amp; 'on' === $instance['display-title']): ?&gt;\n        &lt;h3 class=\"widget-title\"&gt;&lt;?php echo $instance['title']; ?&gt;&lt;\/h3&gt;\n    &lt;?php endif; ?&gt;\n    &lt;p&gt;&lt;?php echo $instance['content']; ?&gt;&lt;\/p&gt;\n&lt;\/div&gt;&lt;!-- #&lt;?php echo $args['id']; ?&gt;--&gt;\n<\/code><\/pre>\n<p>Sel viisil, kui valik on m\u00e4rgitud, kuvatakse pealkiri.<\/p>\n<h3>Selle tagaj\u00e4rg<\/h3>\n<p>\u00dcks asi, mida ma arvan, v\u00e4\u00e4rib mainimist, on see, et m\u00f5nikord saavad inimesed vidinaid aktiveerida, kuid valida sisu puudumise. Muidugi v\u00f5ite vaielda, et kui nad seda teevad, on see nende s\u00fc\u00fc.<\/p>\n<p>Selles on t\u00f5de.<\/p>\n<p>Kuid ma arvan ka, et hoolitseda kasutajate eest, kes v\u00f5ivad asju v\u00e4lja m\u00f5elda v\u00f5i olla kogemata teinud midagi, mida nad ei teadnud, et saavad neid aidata. V\u00f5ib-olla muudab see meid vastutustundlikeks arendajateks (v\u00f5i v\u00f5ib-olla muudab see meid agressiivsemaks \u2013 valige oma valik, ma olen esimesega).<\/p>\n<p>Seega arvan, et antud juhul tasub j\u00e4lgida, et pealkiri ja sisu t\u00fchjad ei oleks. Kui on, siis \u00e4rge renderdage midagi.<\/p>\n<p>Seej\u00e4rel n\u00e4eb kood v\u00e4lja <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-02-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">selline<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/*\n * This file is part of WordPress Widget Boilerplate\n * (c) Tom McFarlin &lt;tom@tommcfarlin.com&gt;\n *\n * This source file is subject to the GPL license that is bundled\n * with this source code in the file LICENSE.\n *\/\n?&gt;\n\n&lt;?php if (empty($instance['title']) &amp;&amp; empty($instance['content'])): return;\nendif; ?&gt;\n\n&lt;div id=\"&lt;?php echo $args['id']; ?&gt;\"&gt;\n    &lt;?php if (isset($instance['display-title']) &amp;&amp; 'on' === $instance['display-title']): ?&gt;\n        &lt;h3 class=\"widget-title\"&gt;&lt;?php echo $instance['title']; ?&gt;&lt;\/h3&gt;\n    &lt;?php endif; ?&gt;\n    &lt;p&gt;&lt;?php echo $instance['content']; ?&gt;&lt;\/p&gt;\n&lt;\/div&gt;&lt;!-- #&lt;?php echo $args['id']; ?&gt;--&gt;\n<\/code><\/pre>\n<p>Ja see l\u00f5petab selle esiotsa osas. Kuidas on aga vahem\u00e4llu salvestamisega, millest \u00fches varasemas postituses r\u00e4\u00e4kisime?<\/p>\n<h3>2 Tutvustame vahem\u00e4llu salvestamist<\/h3>\n<p>Vahem\u00e4llu salvestamine on sellise vidina jaoks midagi, mida ma pean valikuliseks, kuid kuna oleme vahem\u00e4lu t\u00fchjendamiseks Boilerplate&#8217;i p\u00f5hifunktsioonid sisse ehitanud, siis loogiliselt j\u00e4reldub andmete vahem\u00e4llu salvestamise funktsiooni kasutuselev\u00f5tt, eks?<\/p>\n<p>Nii et teeme seda. See ei tohiks ka raske olla. Tegelikkuses v\u00f5tame lihtsalt pealkirja, sisu ja m\u00e4rkeruudu ning salvestame vahem\u00e4llu antud vidina eksemplari v\u00e4\u00e4rtused.<\/p>\n<p>Selleks peame leidma <strong>vidina<\/strong> funktsiooni ja seej\u00e4rel tegema j\u00e4rgmist.<\/p>\n<p>Esiteks tutvustame <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-03-cache-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vidina vahem\u00e4llu salvestamise funktsiooni<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Caches the values for the instance of this widget.\n *\n * @param array $args     argument provided by WordPress that may be useful in rendering the widget\n * @param array $instance the values of the widget\n *\/\nprivate function cacheWidget($args, $instance)\n{\n    $cache = [];\n    $cache['widget_id'] = $args['widget_id'];\n    $cache['title'] = empty($instance['title'])? '': $instance['title'];\n    $cache['content'] = empty($instance['content'])? '': $instance['content'];\n\n    $instance['display-title'] = isset($instance['display-title'])? $instance['display-title']: '';\n    $cache['display-title'] = $instance['display-title'];\n\n    wp_cache_set($this-&gt;getWidgetSlug(), $cache, 'widget');\n}<\/code><\/pre>\n<p>Seej\u00e4rel tutvustame funktsiooni <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-04-get-cached-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vidina vahem\u00e4llu salvestatud versiooni toomiseks<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * @return array the cached instance of this widget if it's not empty\n *\/\nprivate function getCachedWidget()\n{\n    $cache = wp_cache_get($this-&gt;getWidgetSlug(), 'widget');\n    if (!empty($cache)) {\n        return $cache;\n    }\n    return [];\n}<\/code><\/pre>\n<p>Seej\u00e4rel vaatame uuesti l\u00e4bi algse funktsiooni, et veenduda, et kuvame vajaliku. Kui vahem\u00e4lu on t\u00fchi, siis me ei tee muud, kui kuvame v\u00e4\u00e4rtused nii, <a href=\"https:\/\/gist.github.com\/tommcfarlin\/2f6bbe19253188596f804a7c211d9cd5#file-05-widget-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nagu need on<\/a>.<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Displays the widget based on the contents of the included template.\n *\n * @param array $args     argument provided by WordPress that may be useful in rendering the widget\n * @param array $instance the values of the widget\n *\/\npublic function widget($args, $instance)\n{\n    \/\/ Get a cached version of the widget. If it's empty, cache what we have.\n    $cache = $this-&gt;getCachedWidget();\n    if (empty($cache)) {\n        $this-&gt;cacheWidget($args, $instance);\n    }\n\n    return $this-&gt;widgetDisplay-&gt;show($args, $instance);\n}<\/code><\/pre>\n<p>Ja see l\u00f5petab t\u00e4ielikult \u00fcmbert\u00f6\u00f6deldud Widget Boilerplate&#8217;i funktsioonid.<\/p>\n<h2>L\u00f5pp<\/h2>\n<p>See t\u00f5sine asi on kestnud kaua. Isiklikult on olnud v\u00e4ga hea WordPress Widget Boilerplate uuesti \u00fcle vaadata ja viia see kaasaegsematele standarditele.<\/p>\n<p>Pean veel tegema m\u00f5ned asjad, n\u00e4iteks v\u00e4rskendama README-faili ja andma seej\u00e4rel veel m\u00f5ned juhised, enne kui ma selle <strong>p\u00f5hiharuga<\/strong> \u00fchendan, kuid kui olete kogu seda seeriat j\u00e4lginud, olete t\u00f5en\u00e4oliselt kaasas koos k\u00f5igega. Lisaks hindan ma k\u00f5rgelt, et veetsite sellega tegelemise aega ja loodan, et see oli teile m\u00f5nel tasandil kasulik.<\/p>\n<p>Seda arvestades kavatsen liikuda l\u00fchema vormiga esmaklassilise sisu poole, kuna see sari ja viimane olid \u00fcsna pikad. Nagu tavaliselt, v\u00f5ite alati minuga \u00fchendust v\u00f5tta v\u00f5i vajadusel t\u00f5mbetaotlusi pakkuda \u2013 see on avatud l\u00e4htekoodiga ja see tervitab ka t\u00e4iustusi.<\/p>\n<p>Praegu aga l\u00f5petab see seeria.<\/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>Siin viimistleme WordPress Widget Boilerplate&#8217;i v\u00e4rskendatud versiooni, v\u00e4rskendades seda, mida kasutajad esiotsas n\u00e4evad, ja t\u00f6\u00f6tades vahem\u00e4llu salvestamisega.<\/p>\n","protected":false},"author":1,"featured_media":236089,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,894,842,863],"tags":[1165],"class_list":["post-230957","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-kood","category-opetused","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230957","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=230957"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230957\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236089"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}