{"id":228373,"date":"2022-10-23T10:12:00","date_gmt":"2022-10-23T07:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228373"},"modified":"2022-11-09T02:07:40","modified_gmt":"2022-11-08T23:07:40","slug":"tillfaelliga-alternativ-i-wordpress-vaart-baesta-alternativ","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/tillfaelliga-alternativ-i-wordpress-vaart-baesta-alternativ\/","title":{"rendered":"Tillf\u00e4lliga alternativ i WordPress: V\u00e5rt b\u00e4sta alternativ?"},"content":{"rendered":"\n<p>N\u00e4r det kommer till programmering \u00e4r id\u00e9n om tempor\u00e4ra v\u00e4rden eller tempor\u00e4ra variabler eller n\u00e5got s\u00e4tt att lagra data tillf\u00e4lligt i minnet inte n\u00e5got nytt.<\/p>\n<p>Men n\u00e4r vi arbetar med WordPress \u2013 som \u00e4r statsl\u00f6st \u2013 har vi inte alltid den lyxen. Det vill s\u00e4ga, det \u00e4r inte bara en fr\u00e5ga om att till exempel kasta in n\u00e5got i den aktuella <a href=\"https:\/\/php.net\/manual\/en\/features.sessions.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sessionen<\/a>, l\u00e4sa det och sedan ta bort det n\u00e4r vi \u00e4r klara med det.<\/p>\n<p>Och det \u00e4r d\u00e5 jag har funderat mer och mer p\u00e5 id\u00e9n om tillf\u00e4lliga alternativ, i brist p\u00e5 en b\u00e4ttre sikt f\u00f6rst\u00e5s. Det vill s\u00e4ga, n\u00e4r jag beh\u00f6ver lagra ett v\u00e4rde fr\u00e5n en enskild sidh\u00e4mtning, eller beg\u00e4ran, f\u00f6r att l\u00e4sa in en annan sidh\u00e4mtning, eller en annan beg\u00e4ran, kommer jag tillf\u00e4lligt att kasta v\u00e4rdet i <a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">alternativtabellen<\/a>.<\/p>\n<p>Tillf\u00e4lliga alternativ: En \u00f6vning och representation via rudiment\u00e4r skissning<\/p>\n<p>\u00c4r det slarvigt? Kanske. Har vi m\u00e5nga andra val? Det beror p\u00e5 hur mycket av modern webbl\u00e4sarteknik vi vill anv\u00e4nda. Det \u00e4r dock inte meningen med det h\u00e4r inl\u00e4gget.<\/p>\n<p>Po\u00e4ngen \u00e4r att p\u00e5 grund av hur WordPress fungerar undrar jag om v\u00e5r nuvarande b\u00e4sta strategi f\u00f6r att bibeh\u00e5lla tillf\u00e4lliga v\u00e4rden som st\u00f6ds mest \u00f6ver installationer \u00e4r att tillf\u00e4lligt l\u00e4gga till ett v\u00e4rde i alternativtabellen, l\u00e4sa det och sedan ta bort det n\u00e4r det v\u00e4l \u00e4r har h\u00e4mtats?<\/p>\n<h2>V\u00e5ra alternativ f\u00f6r tillf\u00e4lliga tillval<\/h2>\n<p>Personligen har jag ingen stark \u00e5sikt om detta \u00e4r en d\u00e5lig sak eller inte. Om det \u00e4r karakt\u00e4ren p\u00e5 hur grunden som jag arbetar med en l\u00f6sning p\u00e5 fungerar, s\u00e5 g\u00e5r jag med den.<\/p>\n<p>S\u00e5, f\u00f6r det f\u00f6rsta, s\u00e5 h\u00e4r har jag vanligtvis gjort det h\u00e4r inom WordPress:<\/p>\n<h3>1 Skapa ett tillf\u00e4lligt alternativ<\/h3>\n<p>F\u00f6rst st\u00e4ller jag in en funktion som \u00e4r kopplad till <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/update_option\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">update_option<\/a>. Detta g\u00f6r det m\u00f6jligt att titta p\u00e5 alternativet <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-00-init-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">som uppdateras<\/a>, dess gamla v\u00e4rde och dess nya v\u00e4rde.<\/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>I funktionen kan jag titta och se om ett specifikt alternativ sparas. Om inte, s\u00e5 kan jag bara ignorera det; annars kan jag ta en titt p\u00e5 det och b\u00f6rja arbeta med <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-01-manage-temporary-option-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ett tillf\u00e4lligt alternativ<\/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>Men vad skulle det tillf\u00e4lliga alternativet inneh\u00e5lla?<\/p>\n<h3>2 Ett alternativ f\u00f6r tillf\u00e4lliga tillval<\/h3>\n<p>S\u00e4g att du har ett alternativ i ett plugin som \u00e4r v\u00e4xlat. Kanske kr\u00e4ver det att anv\u00e4ndaren matar in lite information innan han g\u00e5r igenom resten av en process.<\/p>\n<p>Exempel: S\u00e4g att du arbetar med en kassaupplevelse och att du vill tvinga anv\u00e4ndare att skapa ett konto, men det finns ett alternativ som till\u00e5ter kunder att betala utan att skapa ett konto.<\/p>\n<p>En implementering vi kan anv\u00e4nda \u00e4r denna:<\/p>\n<ol>\n<li>Innan kassasidan laddas, titta f\u00f6r att se om anv\u00e4ndaren kan betala som g\u00e4st.<\/li>\n<li>Om s\u00e5 \u00e4r fallet, lagra det ursprungliga v\u00e4rdet f\u00f6r alternativet i ett tillf\u00e4lligt alternativ.<\/li>\n<li>\u00c4ndra det ursprungliga v\u00e4rdet s\u00e5 att det kr\u00e4ver att de skapar ett konto.<\/li>\n<li>N\u00e4r kassan \u00e4r klar kopierar du v\u00e4rdet fr\u00e5n det tillf\u00e4lliga alternativet till det ursprungliga alternativet.<\/li>\n<li>Ta bort det tillf\u00e4lliga alternativet.<\/li>\n<\/ol>\n<p>Det liknar hela \u00f6vningen i C n\u00e4r du beh\u00f6ver en pekare f\u00f6r att <a href=\"http:\/\/www.c4learn.com\/c-programs\/interchanging-values-of-two-variables.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">byta tv\u00e5 nummer<\/a> (f\u00f6r den som kommer ih\u00e5g eller den som har gjort det).<\/p>\n<h2>V\u00e5rt b\u00e4sta alternativ?<\/h2>\n<p>Processen som beskrivs ovan \u00e4r bara ett exempel och \u00e4r inte t\u00e4nkt att vara det definitiva s\u00e4ttet att uppr\u00e4tth\u00e5lla tillf\u00e4lliga v\u00e4rden. F\u00f6r det andra \u00e4r kassaexemplet inte menat att associera detta inl\u00e4gg med e-handel.<\/p>\n<p>Ist\u00e4llet \u00e4r det t\u00e4nkt att ge ett konkret anv\u00e4ndningsfall f\u00f6r n\u00e4r det \u00e4r anv\u00e4ndbart att lagra tillf\u00e4lliga alternativ och hur vi kanske vill g\u00f6ra det.<\/p>\n<p>S\u00e5 den ursprungliga fr\u00e5gan kvarst\u00e5r: Med tanke p\u00e5 hur WordPress fungerar, bristen p\u00e5 sessioner, och utan att vara garanterade vissa webbl\u00e4sarfunktioner som localStorage, \u00e4r tillf\u00e4lliga alternativ i alternativtabellen v\u00e5r b\u00e4sta v\u00e4g att g\u00e5?<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Med tanke p\u00e5 hur WordPress fungerar, bristen p\u00e5 sessioner och bristen p\u00e5 webbl\u00e4sarfunktioner, \u00e4r tillf\u00e4lliga alternativ i alternativtabellen v\u00e5r b\u00e4sta v\u00e4g att g\u00e5?<\/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":[848,901,755,922,818,724,868],"tags":[1173],"class_list":["post-228373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oeppen-kaella","category-oevrig","category-plugins-3","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228373"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228373\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/221144"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}