{"id":231278,"date":"2022-12-12T20:09:00","date_gmt":"2022-12-12T17:09:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231278"},"modified":"2022-12-07T11:19:11","modified_gmt":"2022-12-07T08:19:11","slug":"una-strategia-per-inizializzare-le-impostazioni-dei-plugin","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/una-strategia-per-inizializzare-le-impostazioni-dei-plugin\/","title":{"rendered":"Una strategia per inizializzare le impostazioni dei plugin"},"content":{"rendered":"\n<p>Ogni volta che stai lavorando su un plug-in che offre una pagina per le sue impostazioni, ci sono diversi modi per salvare e recuperare le informazioni.<\/p>\n<p>Puoi:<\/p>\n<ul>\n<li>utilizzare l&#8217; <strong><a href=\"https:\/\/codex.wordpress.org\/Settings_API\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API delle impostazioni<\/a><\/strong> ,<\/li>\n<li>utilizzare una pagina personalizzata e chiamate ibride delle due,<\/li>\n<li>utilizzare un tipo di ibrido tra <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_submenu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">una pagina di sottomenu<\/a><\/strong> (o <strong><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_menu_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">una pagina di menu<\/a><\/strong>) e altre funzionalit\u00e0.<\/li>\n<\/ul>\n<p>Pi\u00f9 lavoro con WordPress, meno mi interessa usare l&#8217;API delle impostazioni e optare per un approccio un po&#8217; ibrido.<\/p>\n<p>A seconda dei requisiti del progetto, l&#8217;attuazione varier\u00e0; tuttavia, cerco di utilizzare un modo relativamente coerente per creare la funzionalit\u00e0.<\/p>\n<p>E sebbene questo post non esaminer\u00e0 i vari modi in cui creo le mie pagine, classi correlate e cos\u00ec via, offrir\u00e0 un modo per inizializzare le impostazioni del plug-in quando lavori sul tuo progetto o su un progetto per qualcun altro.<\/p>\n<h2>Inizializzazione delle impostazioni del plugin<\/h2>\n<p>Per questo post, supponi che i requisiti richiedano la memorizzazione dei valori di una pagina come un array associativo che viene disinfettato e serializzato dall&#8217;interno del plug-in.<\/p>\n<p>Oltre alla funzionalit\u00e0 di sanificazione di cui avrai bisogno, sai anche che lavorerai con:<\/p>\n<ol>\n<li>la tabella delle opzioni,<\/li>\n<li>e, come tale, una chiave univoca per le opzioni memorizzate nella tabella delle opzioni<\/li>\n<\/ol>\n<p>Ora, nel contesto della programmazione orientata agli oggetti, normalmente ho diverse classi impostate per gestire tutte queste funzionalit\u00e0, ma mi interessa principalmente mostrare un modo per inizializzare le impostazioni del plugin.<\/p>\n<h3>Ma perch\u00e9?<\/h3>\n<p>Se carichi una pagina che ha lo scopo di recuperare le opzioni dal database e i valori non sono stati inizializzati, vedrai degli avvisi sullo schermo o qualcosa apparir\u00e0 nel tuo file di registro di debug.<\/p>\n<p>Tutto dipende da come hai configurato la tua installazione locale e da come il tuo host ha definito la sua configurazione.<\/p>\n<p>Indipendentemente da ci\u00f2, vuoi assicurarti di aver inizializzato le impostazioni del plug-in in modo da avere almeno la riga impostata nel database e i valori iniziali o i valori vuoti impostati per il plug-in.<\/p>\n<h3>Come farlo<\/h3>\n<p>Come accennato in precedenza, poich\u00e9 sono un fan dell&#8217;utilizzo delle classi nel mio lavoro, di solito configuro una classe responsabile della lettura e della scrittura di valori nel database. E questo include l&#8217;inizializzazione delle impostazioni del plugin.<\/p>\n<p>Per fare ci\u00f2, generalmente lavoro utilizzando il seguente processo:<\/p>\n<ol>\n<li>inizializzare la classe,<\/li>\n<li>verificare se esiste un&#8217;opzione nel database,<\/li>\n<li>in caso contrario, inizializzarlo,<\/li>\n<li>se \u00e8 cos\u00ec, non fare nulla.<\/li>\n<\/ol>\n<p>Il codice iniziale per farlo potrebbe essere <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-00-initialize-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">simile a questo<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\/**\n * Initializes the plugin settings fo ruse throughout the rest of the plugin.\n *\/\nprivate function initialize() {\n    $settings = [\n        'username' =&gt; '',\n        'user-info' =&gt; [\n              'location' =&gt; '',\n              'id-number' =&gt; '',\n              'first-name' =&gt; '',\n              'last-name' =&gt; '',\n        ],\n        'short-bio' =&gt; '',\n    ];\n    update_option('acme-plugin-settings', $settings);\n}\n<\/code><\/pre>\n<p>Ma poich\u00e9 questo \u00e8 nella sua stessa funzione, pu\u00f2 essere chiamato all&#8217;interno del costruttore della tua classe, oppure puoi contrassegnarlo come <strong>pubblico<\/strong> e chiamarlo fuori dalla classe. Per questo post, tuttavia, sto effettuando una chiamata <strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-01-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nel costruttore<\/a><\/strong> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Intiializes the properties of the class, primarily the array of settings.\n *\/\npublic function __construct() {\n    if (false === get_option('acme-plugin-settings')) {\n        $this-&gt;initialize();\n    }\n    \/\/ More to come...\n}\n<\/code><\/pre>\n<p><strong><a href=\"https:\/\/gist.github.com\/tommcfarlin\/5a9940d1364b4d15e1de755f78bd0a79#file-02-final-constructor-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">E una volta che i valori sono stati inizializzati, \u00e8 possibile impostare<\/a><\/strong> un attributo sulla classe :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Intiializes the properties of the class, primarily the array of settings.\n *\/\npublic function __construct() {\n    if (false === get_option('acme-plugin-settings')) {\n        $this-&gt;initialize();\n    }\n    $this-&gt;settings = get_option('acme-plugin-settings');\n}\n<\/code><\/pre>\n<p>Sebbene ci sia un caso da sostenere che questo non dovrebbe essere fatto nel costruttore, mi piace avere le propriet\u00e0 della classe inizializzate all&#8217;interno del costruttore di detta classe.<\/p>\n<p>E poich\u00e9 la classe \u00e8 responsabile del mantenimento di un riferimento alle impostazioni, ha senso inizializzare le impostazioni qui.<\/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>Questo post non copre vari modi per creare pagine di opzioni, offre un modo per inizializzare le impostazioni del plug-in.<\/p>\n","protected":false},"author":1,"featured_media":234934,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,835,804,720,865],"tags":[1168],"class_list":["post-231278","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-guida-per-principianti","category-php-6","category-sviluppatore","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231278","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=231278"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231278\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/234934"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}