{"id":231289,"date":"2022-12-26T17:15:00","date_gmt":"2022-12-26T14:15:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231289"},"modified":"2022-12-26T17:19:33","modified_gmt":"2022-12-26T14:19:33","slug":"utiliza-transitorios-de-wordpress-en-lugar-de-cookies","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/utiliza-transitorios-de-wordpress-en-lugar-de-cookies\/","title":{"rendered":"\u00bfUtiliza transitorios de WordPress en lugar de cookies?"},"content":{"rendered":"\n<p><a href=\"https:\/\/tommcfarlin.com\/set-cookies-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">He escrito sobre el uso de cookies en WordPress<\/a> antes, pero una de las cosas al hacerlo es que, por lo general, luego se activan en el contexto de un gancho de <strong>inicio .<\/strong><\/p>\n<p>Cuando se trabaja de forma orientada a objetos y se trata de desacoplar ciertas piezas de l\u00f3gica de modo que pueda usarlas sin tener que depender de otros ganchos, es importante encontrar formas de manejar esto.<\/p>\n<p>De lo contrario, el c\u00f3digo se acopla estrechamente y puede tener enlaces, <strong>llamadas<\/strong> de acci\u00f3n o funciones an\u00f3nimas por todas partes.<\/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=\"\u00bfUtiliza transitorios de WordPress en lugar de cookies?\"><\/a><\/p>\n<p>Para simular la naturaleza de las cookies y su caracter\u00edstica de caducidad, el uso de transitorios de WordPress a trav\u00e9s de la <a href=\"https:\/\/codex.wordpress.org\/Transients_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API<\/a> de transitorios con el nombre apropiado puede ser una soluci\u00f3n viable.<\/p>\n<h2>Uso de transitorios de WordPress<\/h2>\n<p>Si est\u00e1 familiarizado con alguna de las API de metadatos que se encuentran en WordPress, es probable que est\u00e9 familiarizado con las funciones que utilizan. Esto incluye operaciones est\u00e1ndar como <strong>agregar<\/strong>, <strong>obtener<\/strong>, <strong>actualizar<\/strong> y <strong>eliminar<\/strong>.<\/p>\n<p>Y con WordPress, puede simplificar en muchos lugares para actualizar, obtener y eliminar porque la <strong>actualizaci\u00f3n<\/strong> primero ver\u00e1 si existe una informaci\u00f3n y, si no, la agregar\u00e1.<\/p>\n<h3>Dise\u00f1o de una interfaz de clase<\/h3>\n<p>Por lo tanto, la interfaz para una clase que envuelve la API de transitorios podr\u00eda reducirse a:<\/p>\n<ul>\n<li>establecer,<\/li>\n<li>obtener,<\/li>\n<li>Eliminar.<\/li>\n<\/ul>\n<p>Donde <strong>set<\/strong> reemplaza <strong>add<\/strong> y <strong>update<\/strong>. Adem\u00e1s, es bueno tener funciones auxiliares como <strong>has<\/strong> que nos permitan escribir condicionales en el c\u00f3digo que llama a la biblioteca.<\/p>\n<p>Por ejemplo, si desea hacer algo como &quot;si esto no tiene valor, vuelva&quot;.<\/p>\n<p>Por lo tanto, la interfaz para el c\u00f3digo puede verse <a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-00-data-store-interface-1-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">as\u00ed:<\/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>Tambi\u00e9n hay algunas advertencias a tener en cuenta cuando se trabaja con c\u00f3digo como este. Es decir, \u00bfqu\u00e9 pasa con el caso de usuarios autenticados y usuarios no autenticados?<\/p>\n<p>Cuando eso sucede, hay otra manera en la que los datos transitorios pueden necesitar ser manejados (dependiendo de su m\u00e9todo de implementaci\u00f3n anterior).<\/p>\n<p>Sin embargo, puedo cubrir eso en una publicaci\u00f3n de seguimiento.<\/p>\n<h2>Una palabra de precauci\u00f3n<\/h2>\n<p>Sin embargo, hay algo para recordar: no es una buena idea <a href=\"https:\/\/wordpress.mediadoma.com\/es\/no-contamine-la-tabla-de-opciones-de-wordpress\/\" title=\"contaminar la tabla de opciones de WordPress\">contaminar la tabla de opciones de WordPress<\/a>. Y aqu\u00ed es precisamente donde se almacenan los transitorios.<\/p>\n<p>Entonces, si va a usar transitorios de WordPress, aseg\u00farese de no arrojar una tonelada de valores en la base de datos.<\/p>\n<p>Justo lo que se necesita. Y si se necesita una gran cantidad de datos, quiz\u00e1s deba observar la arquitectura de su c\u00f3digo o considerar otro tipo de base de datos.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para simular las cookies y su caracter\u00edstica de caducidad, el uso de transitorios de WordPress puede ser una soluci\u00f3n 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":[892,716,800,840,861],"tags":[1172],"class_list":["post-231289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=231289"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/237021"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}