{"id":229313,"date":"2022-10-23T10:15:00","date_gmt":"2022-10-23T07:15:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=229313"},"modified":"2022-11-09T06:26:38","modified_gmt":"2022-11-09T03:26:38","slug":"opzioni-temporanee-in-wordpress-la-nostra-migliore-opzione","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/opzioni-temporanee-in-wordpress-la-nostra-migliore-opzione\/","title":{"rendered":"Opzioni temporanee in WordPress: la nostra migliore opzione?"},"content":{"rendered":"\n<p>Quando si tratta di programmazione, l&#8217;idea di valori temporanei o variabili temporanee o di qualsiasi modo di memorizzare temporaneamente i dati in memoria non \u00e8 una novit\u00e0.<\/p>\n<p>Ma quando lavoriamo con WordPress, che \u00e8 apolide, non abbiamo sempre quel lusso. Cio\u00e8, non si tratta semplicemente, diciamo, di inserire qualcosa nella <a href=\"https:\/\/php.net\/manual\/en\/features.sessions.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sessione<\/a> corrente, leggerlo e quindi rimuoverlo quando abbiamo finito.<\/p>\n<p>Ed \u00e8 allora che ho riflettuto sempre di pi\u00f9 sull&#8217;idea di opzioni temporanee, in mancanza ovviamente di un termine migliore. Cio\u00e8, ogni volta che devo memorizzare un valore da un caricamento di una singola pagina, o richiedere, per leggere un altro caricamento di pagina o un&#8217;altra richiesta, inserir\u00f2 temporaneamente il valore nella <a href=\"https:\/\/codex.wordpress.org\/Database_Description#Table:_wp_options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">tabella delle opzioni<\/a>.<\/p>\n<p>Opzioni temporanee: un esercizio e una rappresentazione tramite schizzi rudimentali<\/p>\n<p>\u00c8 sciatto? Forse. Abbiamo molte altre scelte? Dipende da quanta tecnologia moderna del browser vogliamo utilizzare. Non \u00e8 questo il punto di questo post, per\u00f2.<\/p>\n<p>Il punto \u00e8 che, a causa del modo in cui funziona WordPress, mi chiedo se la nostra attuale strategia migliore per mantenere i valori temporanei pi\u00f9 ampiamente supportati in tutte le installazioni sia aggiungere temporaneamente un valore nella tabella delle opzioni, leggerlo e quindi eliminarlo una volta che \u00e8 stato recuperato?<\/p>\n<h2>Le nostre opzioni per le opzioni temporanee<\/h2>\n<p>Personalmente, non ho un&#8217;opinione forte sul fatto che questa sia una cosa negativa o meno. Se \u00e8 la natura di come funziona la base su cui sto lavorando a una soluzione, allora la seguir\u00f2.<\/p>\n<p>Quindi, in primo luogo, questo \u00e8 il modo in cui in genere l&#8217;ho fatto all&#8217;interno di WordPress:<\/p>\n<h3>1 Creazione di un&#8217;opzione temporanea<\/h3>\n<p>Innanzitutto, ho impostato una funzione che \u00e8 collegata a <a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/update_option\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">update_option<\/a>. Ci\u00f2 consente di esaminare l&#8217;opzione <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-00-init-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">in fase di aggiornamento<\/a>, il suo vecchio valore e il suo nuovo valore.<\/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>Nella funzione, posso guardare e vedere se un&#8217;opzione specifica viene salvata. In caso contrario, posso semplicemente ignorarlo; in caso contrario, posso dargli un&#8217;occhiata e iniziare a lavorare con <a href=\"https:\/\/gist.github.com\/tommcfarlin\/09c436b55f4c5eecc4187d7fc438ea40#file-01-manage-temporary-option-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">un&#8217;opzione temporanea<\/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>Ma cosa conterrebbe l&#8217;opzione temporanea?<\/p>\n<h3>2 Un&#8217;opzione per le opzioni temporanee<\/h3>\n<p>Supponiamo che tu abbia un&#8217;opzione in un plug-in che \u00e8 attivato. Forse richiede all&#8217;utente di inserire alcune informazioni prima di passare al resto di un processo.<\/p>\n<p>Esempio calzante: supponiamo che tu stia lavorando a un&#8217;esperienza di pagamento e desideri costringere gli utenti a creare un account, ma esiste un&#8217;opzione che consente ai clienti di effettuare il pagamento senza creare un account.<\/p>\n<p>Un&#8217;implementazione che potremmo usare \u00e8 questa:<\/p>\n<ol>\n<li>Prima che la pagina di pagamento venga caricata, verifica se l&#8217;utente pu\u00f2 effettuare il pagamento come ospite.<\/li>\n<li>In tal caso, memorizzare il valore originale dell&#8217;opzione in un&#8217;opzione temporanea.<\/li>\n<li>Modifica il valore originale in modo che richieda la creazione di un account.<\/li>\n<li>Una volta terminato il processo di pagamento, copia il valore dall&#8217;opzione temporanea all&#8217;opzione originale.<\/li>\n<li>Elimina l&#8217;opzione temporanea.<\/li>\n<\/ol>\n<p>\u00c8 simile all&#8217;intero esercizio in C quando hai bisogno di un puntatore per <a href=\"http:\/\/www.c4learn.com\/c-programs\/interchanging-values-of-two-variables.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">scambiare due numeri<\/a> (per chi se lo ricorda o chi l&#8217;ha fatto).<\/p>\n<h2>La nostra migliore opzione?<\/h2>\n<p>Il processo sopra delineato \u00e8 solo un esempio e non vuole essere il modo definitivo per mantenere valori temporanei. In secondo luogo, l&#8217;esempio di checkout non ha lo scopo di associare questo post all&#8217;eCommerce.<\/p>\n<p>Invece, ha lo scopo di fornire un caso d&#8217;uso concreto per quando la memorizzazione di opzioni temporanee \u00e8 utile e come potremmo volerlo fare.<\/p>\n<p>Quindi la domanda originale rimane: dato il modo in cui funziona WordPress, la mancanza di sessioni e senza la garanzia di alcune funzionalit\u00e0 del browser come localStorage, le opzioni temporanee nella tabella delle opzioni sono il nostro modo migliore per andare?<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dato come funziona WordPress, la mancanza di sessioni e la mancanza di funzionalit\u00e0 del browser, le opzioni temporanee nella tabella delle opzioni sono la nostra migliore strada da percorrere?<\/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":[918,896,751,814,720,844,865],"tags":[1168],"class_list":["post-229313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-open-source-projektmanagement-3","category-plugin-2","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=229313"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/229313\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/221144"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=229313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=229313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=229313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}