{"id":231070,"date":"2022-12-26T18:03:00","date_gmt":"2022-12-26T15:03:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231070"},"modified":"2022-12-26T18:04:29","modified_gmt":"2022-12-26T15:04:29","slug":"anvaender-du-wordpress-transients-istaellet-foer-cookies","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/anvaender-du-wordpress-transients-istaellet-foer-cookies\/","title":{"rendered":"Anv\u00e4nder du WordPress Transients ist\u00e4llet f\u00f6r cookies?"},"content":{"rendered":"\n<p><a href=\"https:\/\/tommcfarlin.com\/set-cookies-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jag har skrivit om att anv\u00e4nda cookies i WordPress<\/a> f\u00f6rut, men en av sakerna med att g\u00f6ra det \u00e4r att de vanligtvis efter avfyras inom ramen f\u00f6r en <strong>init-<\/strong> hook.<\/p>\n<p>N\u00e4r du arbetar p\u00e5 ett objektorienterat s\u00e4tt och f\u00f6rs\u00f6ker koppla bort vissa delar av logik s\u00e5 att du kan anv\u00e4nda dem utan att beh\u00f6va f\u00f6rlita dig p\u00e5 andra krokar, \u00e4r det viktigt att hitta s\u00e4tt att hantera detta.<\/p>\n<p>Annars blir koden t\u00e4tt kopplad, och du kan ha hooks, <strong>do_action-<\/strong> anrop eller anonyma funktioner \u00f6verallt.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159955-61e70123bd8a1.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-159955-61e70123bd8a1.png\" alt=\"Anv\u00e4nder du WordPress Transients ist\u00e4llet f\u00f6r cookies?\"><\/a><\/p>\n<p>F\u00f6r att simulera typen av cookies och deras funktion av utg\u00e5ngsdatum kan det vara en g\u00e5ngbar l\u00f6sning att anv\u00e4nda WordPress-transienter via det passande namnet <a href=\"https:\/\/codex.wordpress.org\/Transients_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Transients API .<\/a><\/p>\n<h2>Anv\u00e4nder WordPress Transients<\/h2>\n<p>Om du \u00e4r bekant med n\u00e5gon av metadata-API:erna som finns i WordPress, d\u00e5 \u00e4r du troligen bekant med funktionerna de anv\u00e4nder. Detta inkluderar standardoperationer som <strong>l\u00e4gg till<\/strong>, <strong>h\u00e4mta<\/strong>, <strong>uppdatera<\/strong> och <strong>ta bort<\/strong>.<\/p>\n<p>Och med WordPress kan du f\u00f6renkla det p\u00e5 m\u00e5nga st\u00e4llen att uppdatera, h\u00e4mta och ta bort eftersom <strong>uppdateringen<\/strong> kommer f\u00f6rst att se om en del information finns och, om inte, kommer att l\u00e4gga till den.<\/p>\n<h3>Designa ett klassgr\u00e4nssnitt<\/h3>\n<p>S\u00e5ledes kan gr\u00e4nssnittet f\u00f6r en klass som omsluter Transients API reduceras till:<\/p>\n<ul>\n<li>upps\u00e4ttning,<\/li>\n<li>skaffa sig,<\/li>\n<li>radera.<\/li>\n<\/ul>\n<p>D\u00e4r <strong>set<\/strong> ers\u00e4tter <strong>l\u00e4gg till<\/strong> och <strong>uppdatera<\/strong>. Dessutom \u00e4r det trevligt att ha hj\u00e4lpfunktioner som <strong>har<\/strong> som g\u00f6r att vi kan skriva villkor i kod som anropar till biblioteket.<\/p>\n<p>Till exempel, om du kanske vill g\u00f6ra n\u00e5got som &quot;om detta inte har n\u00e5got v\u00e4rde, \u00e5terv\u00e4nd sedan.&quot;<\/p>\n<p>D\u00e4rf\u00f6r kan gr\u00e4nssnittet f\u00f6r koden se ut ungef\u00e4r <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-00-data-store-interface-1-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e5 h\u00e4r:<\/a><\/p>\n<pre><code>&lt;?php\n\/**\n * A wrapper for the Transients API. Because using `setcookie` only works in the `init`\n * hook of WordPress, then we need a way to simulate it. That's what the purpose of this class\n * does.\n *\n * It will use the ID of the user who is currently logged in (or the PHP's get_current_user value if\n * they are not logged in).\n *\n * @author Tom McFarlin &lt;tom@tommcfarlin.com&gt;\n *\/\ninterface DataStore {\n    \/**\n     * Determines if a transient value already exists identified with the incoming key.\n     *\n     * @param string $key The key used to identify the key in the database.\n     *\n     * @return bool       True if a transient exists; otherwise, false.\n     *\/\n    public function has( string $key );\n\n    \/**\n     * Saves the specified value for 24 hours.\n     *\n     * @param string $key   The key used to identify the key in the database.\n     * @param string $value The value to save for 24 hours.\n     *\/\n    public function set( string $key, string $value );\n\n    \/**\n     * Retrieves the transient value from the database.\n     *\n     * @param string $key The key used to identify the key in the database.\n     *\n     * @return string     The value associated with the incoming transient.\n     *\/\n    public function get( string $key );\n\n    \/**\n     * Deletes the transient data.\n     *\n     * @param string $key The key used to identify the key in the database.\n     *\/\n    public function delete( string $key );\n}\n<\/code><\/pre>\n<p>Det finns n\u00e5gra varningar att t\u00e4nka p\u00e5 n\u00e4r du arbetar med kod som denna ocks\u00e5. Det vill s\u00e4ga, hur \u00e4r det med fallet med autentiserade anv\u00e4ndare och icke-autentiserade anv\u00e4ndare?<\/p>\n<p>N\u00e4r det h\u00e4nder finns det ett annat s\u00e4tt p\u00e5 vilket \u00f6verg\u00e5ende data kan beh\u00f6va hanteras (beroende p\u00e5 din implementeringsmetod ovan).<\/p>\n<p>Jag kan dock ta upp det i ett uppf\u00f6ljande inl\u00e4gg.<\/p>\n<h2>Ett varningens ord<\/h2>\n<p>H\u00e4r \u00e4r dock en sak att komma ih\u00e5g: Det \u00e4r inte en bra id\u00e9 att <a href=\"https:\/\/wordpress.mediadoma.com\/sv\/foerorena-inte-wordpress-alternativtabellen\/\" title=\"f\u00f6rorena WordPress-alternativtabellen\">f\u00f6rorena WordPress-alternativtabellen<\/a>. Och det \u00e4r just h\u00e4r transienter lagras.<\/p>\n<p>S\u00e5 om du ska anv\u00e4nda WordPress-transienter, se till att du inte sl\u00e4nger in massor av v\u00e4rden i databasen.<\/p>\n<p>Precis vad som beh\u00f6vs. Och om det beh\u00f6vs mycket data, kanske du beh\u00f6ver titta p\u00e5 arkitekturen f\u00f6r din kod eller \u00f6verv\u00e4ga en annan typ av databas.<\/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>F\u00f6r att simulera cookies och deras funktion av utg\u00e5ngsdatum kan det vara en g\u00e5ngbar l\u00f6sning att anv\u00e4nda WordPress-transienter.<\/p>\n","protected":false},"author":1,"featured_media":237021,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[848,901,807,724,868],"tags":[1173],"class_list":["post-231070","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-php-9","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231070","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=231070"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/231070\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/237021"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=231070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=231070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=231070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}