{"id":229055,"date":"2022-10-23T09:50:00","date_gmt":"2022-10-23T06:50:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229055"},"modified":"2022-11-09T05:21:21","modified_gmt":"2022-11-09T02:21:21","slug":"vaeliaikaiset-vaihtoehdot-wordpressissae-paras-vaihtoehtomme","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/vaeliaikaiset-vaihtoehdot-wordpressissae-paras-vaihtoehtomme\/","title":{"rendered":"V\u00e4liaikaiset vaihtoehdot WordPressiss\u00e4: Paras vaihtoehtomme?"},"content":{"rendered":"\n<p>Mit\u00e4 tulee ohjelmointiin, ajatus v\u00e4liaikaisista arvoista tai v\u00e4liaikaisista muuttujista tai mik\u00e4 tahansa tapa tallentaa tietoja tilap\u00e4isesti muistiin ei ole mik\u00e4\u00e4n uusi.<\/p>\n<p>Mutta kun ty\u00f6skentelemme WordPressin kanssa \u2013 joka on valtioton \u2013 meill\u00e4 ei aina ole sit\u00e4 ylellisyytt\u00e4. Eli kyse ei ole vain siit\u00e4, ett\u00e4 heitet\u00e4\u00e4n jotain nykyiseen <a href=\"https:\/\/php.net\/manual\/en\/features.sessions.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">istuntoon<\/a>, luetaan se ja sitten poistetaan se, kun olemme lopettaneet sen.<\/p>\n<p>Ja silloin olen pohtinut yh\u00e4 enemm\u00e4n ajatusta v\u00e4liaikaisista vaihtoehdoista, tietysti paremman termin puuttuessa. Toisin sanoen aina, kun minun on tallennettava arvo yhdest\u00e4 sivulatauksesta tai pyynn\u00f6st\u00e4 lukeaksesi toista sivulatausta tai toista pyynt\u00f6\u00e4, heit\u00e4n arvon tilap\u00e4isesti <a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">asetustaulukkoon<\/a>.<\/p>\n<p>V\u00e4liaikaiset vaihtoehdot: Harjoitus ja esitys alkeellisella luonnostelulla<\/p>\n<p>Onko se huolimatonta? Voi olla. Onko meill\u00e4 paljon muita vaihtoehtoja? Se riippuu siit\u00e4, kuinka paljon nykyaikaista selaintekniikkaa haluamme k\u00e4ytt\u00e4\u00e4. Se ei kuitenkaan ole t\u00e4m\u00e4n postauksen tarkoitus.<\/p>\n<p>Asia on siin\u00e4, ett\u00e4 WordPressin toimintatavasta johtuen ihmettelen, onko nykyinen paras strategiamme tilap\u00e4isten arvojen yll\u00e4pit\u00e4miseksi, jota tuetaan laajimmin eri asennuksissa, lis\u00e4t\u00e4 tilap\u00e4isesti arvo asetustaulukkoon, lukea se ja sitten poistaa se, kun se on valmis. haettu?<\/p>\n<h2>Vaihtoehtomme tilap\u00e4isille vaihtoehdoille<\/h2>\n<p>Henkil\u00f6kohtaisesti minulla ei ole vahvaa mielipidett\u00e4 siit\u00e4, onko t\u00e4m\u00e4 huono asia vai ei. Jos se perustuu siihen, miten ratkaisun parissa ty\u00f6skentelen perusta, toimin sen kanssa.<\/p>\n<p>Joten ensinn\u00e4kin n\u00e4in olen yleens\u00e4 tehnyt t\u00e4m\u00e4n WordPressiss\u00e4:<\/p>\n<h3>1 V\u00e4liaikaisen vaihtoehdon luominen<\/h3>\n<p>Ensin m\u00e4\u00e4ritin toiminnon, joka on koukussa <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/update_option\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">update_option -toimintoon<\/a>. T\u00e4m\u00e4 mahdollistaa <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-00-init-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">p\u00e4ivitett\u00e4v\u00e4n<\/a> vaihtoehdon, sen vanhan ja uuden arvon tarkastelun.<\/p>\n<pre><code>&lt;?php\n\npublic function init() {\n\n    add_action(\n        'update_option',\n        array( $this, 'manage_temporary_option' ),\n        10, 3\n    );\n}<\/code><\/pre>\n<p>Toiminnossa voin katsoa ja n\u00e4hd\u00e4, tallennetaanko tietty vaihtoehto. Jos ei, voin vain j\u00e4tt\u00e4\u00e4 sen huomiotta; Muuten voin katsoa sit\u00e4 ja alkaa ty\u00f6skennell\u00e4 <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-01-manage-temporary-option-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">v\u00e4liaikaisella vaihtoehdolla<\/a>.<\/p>\n<pre><code>&lt;?php\n\npublic function manage_temporary_option( $option_name, $old_value, $new_value) {\n\n    if ('an_irrelevant_option' !== $option_name) {\n        return;\n    }\n\n    $url = 'page-from-which-we-expect-to-come.php';\n    if ($url === $_SERVER['REQUEST_URI']) {\n\n        update_option(\n            'our_temporary_option',\n            $new_value\n        );\n    }\n}\n<\/code><\/pre>\n<p>Mutta mit\u00e4 v\u00e4liaikainen vaihtoehto tekisi?<\/p>\n<h3>2 Vaihtoehto v\u00e4liaikaisille optioille<\/h3>\n<p>Oletetaan, ett\u00e4 sinulla on vaihtoehto, joka on kytketty p\u00e4\u00e4lle. Ehk\u00e4 se edellytt\u00e4\u00e4, ett\u00e4 k\u00e4ytt\u00e4j\u00e4 sy\u00f6tt\u00e4\u00e4 tietoja ennen kuin h\u00e4n siirtyy prosessin loppuun.<\/p>\n<p>Esimerkki: Oletetaan, ett\u00e4 ty\u00f6skentelet kassakokemuksen parissa ja haluat pakottaa k\u00e4ytt\u00e4j\u00e4t luomaan tilin, mutta olemassa on vaihtoehto, jonka avulla asiakkaat voivat tehd\u00e4 kassalle luomatta tili\u00e4.<\/p>\n<p>Yksi toteutus, jota voisimme k\u00e4ytt\u00e4\u00e4, on t\u00e4m\u00e4:<\/p>\n<ol>\n<li>Tarkista ennen kassasivun lataamista, voiko k\u00e4ytt\u00e4j\u00e4 maksaa vieraana.<\/li>\n<li>Jos n\u00e4in on, tallenna vaihtoehdon alkuper\u00e4inen arvo v\u00e4liaikaiseen vaihtoehtoon.<\/li>\n<li>Muuta alkuper\u00e4ist\u00e4 arvoa niin, ett\u00e4 se edellytt\u00e4\u00e4 tilin luomista.<\/li>\n<li>Kun kassaprosessi on valmis, kopioi arvo v\u00e4liaikaisesta vaihtoehdosta alkuper\u00e4iseen vaihtoehtoon.<\/li>\n<li>Poista v\u00e4liaikainen vaihtoehto.<\/li>\n<\/ol>\n<p>Se on samanlainen kuin koko C:n harjoitus, kun tarvitset osoittimen <a href=\"http:\/\/www.c4learn.com\/c-programs\/interchanging-values-of-two-variables.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kahden numeron vaihtamiseen<\/a> (jolle, joka muistaa tai kuka on tehnyt sen).<\/p>\n<h2>Paras vaihtoehtomme?<\/h2>\n<p>Yll\u00e4 kuvattu prosessi on vain esimerkki, eik\u00e4 sen ole tarkoitus olla lopullinen tapa s\u00e4ilytt\u00e4\u00e4 v\u00e4liaikaiset arvot. Toiseksi kassaesimerkin ei ole tarkoitus yhdist\u00e4\u00e4 t\u00e4t\u00e4 viesti\u00e4 verkkokauppaan.<\/p>\n<p>Sen sijaan se on tarkoitettu antamaan konkreettinen k\u00e4ytt\u00f6tapa siit\u00e4, milloin tilap\u00e4isten vaihtoehtojen tallentaminen on hy\u00f6dyllist\u00e4 ja miten voimme haluta sen tehd\u00e4.<\/p>\n<p>Alkuper\u00e4inen kysymys on siis edelleen: Ovatko tilap\u00e4iset vaihtoehdot asetustaulukossa paras tapa edet\u00e4, kun otetaan huomioon WordPressin toimintatapa, istuntojen puute ja ilman tiettyj\u00e4 selaimen ominaisuuksia, kuten localStorage?<\/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>Ottaen huomioon WordPressin toimintatavan, istuntojen puutteen ja selainominaisuuksien puutteen, ovatko tilap\u00e4iset vaihtoehdot asetustaulukossa paras tapa edet\u00e4?<\/p>\n","protected":false},"author":1,"featured_media":221144,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[750,719,895,813,917,843,864],"tags":[1166],"class_list":["post-229055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avoin-laehdekoodi","category-kehittaejae","category-koodi","category-laajennuksia","category-muut","category-opetusohjelmia","category-wordpress-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=229055"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/229055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/221144"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=229055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=229055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=229055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}