{"id":231569,"date":"2022-12-26T17:42:00","date_gmt":"2022-12-26T14:42:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231569"},"modified":"2022-12-26T17:44:33","modified_gmt":"2022-12-26T14:44:33","slug":"utiliser-des-transitoires-wordpress-au-lieu-de-cookies","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/utiliser-des-transitoires-wordpress-au-lieu-de-cookies\/","title":{"rendered":"Utiliser des transitoires WordPress au lieu de cookies\u00a0?"},"content":{"rendered":"\n<p><a href=\"https:\/\/tommcfarlin.com\/set-cookies-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">J&rsquo;ai d\u00e9j\u00e0 \u00e9crit sur l&rsquo;utilisation des cookies dans WordPress<\/a>, mais l&rsquo;une des choses \u00e0 faire est qu&rsquo;ils se d\u00e9clenchent g\u00e9n\u00e9ralement apr\u00e8s dans le contexte d&rsquo;un crochet d&rsquo; <strong>initialisation .<\/strong><\/p>\n<p>Lorsque vous travaillez de mani\u00e8re orient\u00e9e objet et que vous essayez de d\u00e9coupler certains \u00e9l\u00e9ments de logique de mani\u00e8re \u00e0 pouvoir les utiliser sans avoir \u00e0 vous fier \u00e0 d&rsquo;autres crochets, il est important de trouver des moyens de g\u00e9rer cela.<\/p>\n<p>Sinon, le code devient \u00e9troitement coupl\u00e9 et vous pouvez avoir des crochets, des appels <strong>do_action<\/strong> ou des fonctions anonymes partout.<\/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=\"Utiliser des transitoires WordPress au lieu de cookies\u00a0?\"><\/a><\/p>\n<p>Pour simuler la nature des cookies et leur caract\u00e9ristique d&rsquo;expiration, l&rsquo;utilisation des transitoires WordPress via l&rsquo; <a href=\"https:\/\/codex.wordpress.org\/Transients_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API Transients<\/a> bien nomm\u00e9e peut \u00eatre une solution viable.<\/p>\n<h2>Utilisation des transitoires WordPress<\/h2>\n<p>Si vous connaissez l&rsquo;une des API de m\u00e9tadonn\u00e9es pr\u00e9sentes dans WordPress, vous connaissez probablement les fonctions qu&rsquo;elles utilisent. Cela inclut les op\u00e9rations standard telles que <strong>add<\/strong>, <strong>get<\/strong>, <strong>update<\/strong> et <strong>delete<\/strong>.<\/p>\n<p>Et avec WordPress, vous pouvez le simplifier \u00e0 de nombreux endroits pour mettre \u00e0 jour, r\u00e9cup\u00e9rer et supprimer car la mise \u00e0 <strong>jour<\/strong> va d&rsquo;abord voir si une information existe et, si ce n&rsquo;est pas le cas, va l&rsquo;ajouter.<\/p>\n<h3>Concevoir une interface de classe<\/h3>\n<p>Ainsi, l&rsquo;interface d&rsquo;une classe qui encapsule l&rsquo;API Transients pourrait \u00eatre r\u00e9duite \u00e0\u00a0:<\/p>\n<ul>\n<li>Positionner,<\/li>\n<li>obtenir,<\/li>\n<li>effacer.<\/li>\n<\/ul>\n<p>O\u00f9 <strong>set<\/strong> remplace <strong>add<\/strong> et <strong>update<\/strong>. De plus, il est agr\u00e9able d&rsquo;avoir des fonctions d&rsquo;assistance comme <strong>has<\/strong> qui nous permettent d&rsquo;\u00e9crire des conditions dans le code qui appelle la biblioth\u00e8que.<\/p>\n<p>Par exemple, si vous voulez faire quelque chose comme &quot;si cela n&rsquo;a pas de valeur, alors retournez&quot;.<\/p>\n<p>Ainsi, l&rsquo;interface du code peut ressembler <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-00-data-store-interface-1-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e0 ceci\u00a0:<\/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>Il y a aussi quelques mises en garde \u00e0 prendre en compte lorsque vous travaillez avec du code comme celui-ci. Autrement dit, qu&rsquo;en est-il du cas des utilisateurs authentifi\u00e9s et des utilisateurs non authentifi\u00e9s\u00a0?<\/p>\n<p>Lorsque cela se produit, il existe une autre mani\u00e8re de g\u00e9rer les donn\u00e9es transitoires (selon votre m\u00e9thode d&rsquo;impl\u00e9mentation ci-dessus).<\/p>\n<p>Je peux couvrir cela dans un post de suivi, cependant.<\/p>\n<h2>Un mot d&rsquo;avertissement<\/h2>\n<p>Voici une chose \u00e0 retenir, cependant: ce n&rsquo;est pas une bonne id\u00e9e de <a href=\"https:\/\/wordpress.mediadoma.com\/fr\/ne-polluez-pas-le-tableau-des-options-de-wordpress\/\" title=\"polluer le tableau des options de WordPress\">polluer le tableau des options de WordPress<\/a>. Et c&rsquo;est pr\u00e9cis\u00e9ment l\u00e0 que les transitoires sont stock\u00e9s.<\/p>\n<p>Donc, si vous allez utiliser des transitoires WordPress, assurez-vous de ne pas jeter une tonne de valeurs dans la base de donn\u00e9es.<\/p>\n<p>Juste ce qu&rsquo;il faut. Et si vous avez besoin de beaucoup de donn\u00e9es, vous devrez peut-\u00eatre examiner l&rsquo;architecture de votre code ou envisager un autre type de base de donn\u00e9es.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour simuler les cookies et leur fonction d&rsquo;expiration, l&rsquo;utilisation de transitoires WordPress peut \u00eatre une solution viable.<\/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":[893,717,801,841,862],"tags":[1167],"class_list":["post-231569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-2","category-developpeur","category-php-3","category-tutoriels","category-wordpress-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=231569"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231569\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/237021"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}