{"id":231025,"date":"2022-12-26T17:59:00","date_gmt":"2022-12-26T14:59:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231025"},"modified":"2022-12-26T17:59:31","modified_gmt":"2022-12-26T14:59:31","slug":"uzywasz-przejsciowek-wordpress-zamiast-plikow-cookie","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/uzywasz-przejsciowek-wordpress-zamiast-plikow-cookie\/","title":{"rendered":"U\u017cywasz przej\u015bci\u00f3wek WordPress zamiast plik\u00f3w cookie?"},"content":{"rendered":"\n<p><a href=\"https:\/\/tommcfarlin.com\/set-cookies-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Pisa\u0142em ju\u017c wcze\u015bniej o u\u017cywaniu plik\u00f3w cookie w WordPressie<\/a>, ale jedn\u0105 z rzeczy zwi\u0105zanych z robieniem tego jest to, \u017ce zazwyczaj uruchamiaj\u0105 si\u0119 one w kontek\u015bcie zaczepu <strong>init .<\/strong><\/p>\n<p>Pracuj\u0105c w spos\u00f3b obiektowy i pr\u00f3buj\u0105c rozdzieli\u0107 pewne elementy logiki, aby mo\u017cna by\u0142o ich u\u017cywa\u0107 bez konieczno\u015bci polegania na innych haczykach, wa\u017cne jest, aby znale\u017a\u0107 sposoby na poradzenie sobie z tym.<\/p>\n<p>W przeciwnym razie kod staje si\u0119 \u015bci\u015ble powi\u0105zany i mo\u017cesz mie\u0107 hooki, wywo\u0142ania <strong>do_action<\/strong> lub funkcje anonimowe w ka\u017cdym miejscu.<\/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=\"U\u017cywasz przej\u015bci\u00f3wek WordPress zamiast plik\u00f3w cookie?\"><\/a><\/p>\n<p>Aby zasymulowa\u0107 charakter plik\u00f3w cookie i ich funkcj\u0119 wyga\u015bni\u0119cia, op\u0142acalnym rozwi\u0105zaniem mo\u017ce by\u0107 wykorzystanie transients WordPress za po\u015brednictwem odpowiednio nazwanego <a href=\"https:\/\/codex.wordpress.org\/Transients_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API Transients .<\/a><\/p>\n<h2>Korzystanie z przej\u015bci\u00f3wek WordPress<\/h2>\n<p>Je\u015bli znasz kt\u00f3ry\u015b z interfejs\u00f3w API metadanych, kt\u00f3re s\u0105 w WordPressie, prawdopodobnie znasz funkcje, z kt\u00f3rych korzystaj\u0105. Obejmuje to standardowe operacje, takie jak <strong>dodawanie<\/strong>, <strong>pobieranie<\/strong>, <strong>aktualizowanie<\/strong> i <strong>usuwanie<\/strong>.<\/p>\n<p>A dzi\u0119ki WordPressowi mo\u017cesz upro\u015bci\u0107 go w wielu miejscach, aby aktualizowa\u0107, pobiera\u0107 i usuwa\u0107, poniewa\u017c <strong>aktualizacja<\/strong> najpierw sprawdzi, czy istnieje informacja, a je\u015bli nie, doda j\u0105.<\/p>\n<h3>Projektowanie interfejsu klasy<\/h3>\n<p>W ten spos\u00f3b interfejs dla klasy, kt\u00f3ra otacza API Transients, mo\u017cna by zredukowa\u0107 do:<\/p>\n<ul>\n<li>ustawi\u0107,<\/li>\n<li>Dostawa\u0107,<\/li>\n<li>kasowa\u0107.<\/li>\n<\/ul>\n<p>Gdzie <strong>zestaw<\/strong> zast\u0119puje <strong>dodawanie<\/strong> i <strong>aktualizowanie<\/strong>. Co wi\u0119cej, fajnie jest mie\u0107 funkcje pomocnicze, takie jak <strong>has<\/strong>, kt\u00f3re pozwalaj\u0105 nam pisa\u0107 warunki w kodzie, kt\u00f3ry wywo\u0142uje bibliotek\u0119.<\/p>\n<p>Na przyk\u0142ad, je\u015bli chcesz zrobi\u0107 co\u015b w stylu \u201eje\u015bli to nie ma warto\u015bci, zwr\u00f3\u0107&quot;.<\/p>\n<p>Tak wi\u0119c interfejs kodu mo\u017ce wygl\u0105da\u0107 mniej wi\u0119cej <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-00-data-store-interface-1-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tak:<\/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>Podczas pracy z takim kodem nale\u017cy wzi\u0105\u0107 pod uwag\u0119 pewne zastrze\u017cenia. To znaczy, co z przypadkiem u\u017cytkownik\u00f3w uwierzytelnionych i u\u017cytkownik\u00f3w nieuwierzytelnionych?<\/p>\n<p>Kiedy tak si\u0119 dzieje, istnieje inny spos\u00f3b, w jaki dane przej\u015bciowe mog\u0105 wymaga\u0107 obs\u0142ugi (w zale\u017cno\u015bci od powy\u017cszej metody implementacji).<\/p>\n<p>Mog\u0119 to jednak opisa\u0107 w kolejnym po\u015bcie.<\/p>\n<h2>S\u0142owo ostrze\u017cenia<\/h2>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/pl\/nie-zanieczyszczaj-tabeli-opcji-wordpress\/\" title=\"Nale\u017cy jednak pami\u0119ta\u0107: za\u015bmiecanie tabeli opcji WordPressa\">Nale\u017cy jednak pami\u0119ta\u0107: za\u015bmiecanie tabeli opcji WordPressa<\/a> nie jest dobrym pomys\u0142em. I w\u0142a\u015bnie tam przechowywane s\u0105 transjenty.<\/p>\n<p>Wi\u0119c je\u015bli zamierzasz u\u017cywa\u0107 transjent\u00f3w WordPress, upewnij si\u0119, \u017ce nie wrzucasz tony warto\u015bci do bazy danych.<\/p>\n<p>Tylko to, co jest potrzebne. A je\u015bli potrzebnych jest du\u017co danych, by\u0107 mo\u017ce musisz przyjrze\u0107 si\u0119 architekturze swojego kodu lub rozwa\u017cy\u0107 inny rodzaj bazy danych.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aby zasymulowa\u0107 pliki cookie i ich funkcj\u0119 wyga\u015bni\u0119cia, op\u0142acalnym rozwi\u0105zaniem mo\u017ce by\u0107 u\u017cycie przej\u015bci\u00f3wek WordPress.<\/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":[721,897,805,845,866],"tags":[1169],"class_list":["post-231025","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-kod","category-php-7","category-samouczki","category-wordpress-7","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231025","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=231025"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/231025\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/237021"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=231025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=231025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=231025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}