{"id":230143,"date":"2022-11-13T13:08:00","date_gmt":"2022-11-13T10:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230143"},"modified":"2022-11-13T13:08:57","modified_gmt":"2022-11-13T10:08:57","slug":"come-utilizzare-i-plugin-di-wordpress-per-il-caricamento-automatico-di-psr-4","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/come-utilizzare-i-plugin-di-wordpress-per-il-caricamento-automatico-di-psr-4\/","title":{"rendered":"Come utilizzare i plugin di WordPress per il caricamento automatico di PSR-4"},"content":{"rendered":"\n<p>Supponiamo che stai lavorando a un progetto per qualcuno e lo hai individuato, le attivit\u00e0 sono delegate, hai tutte le librerie e gli strumenti necessari per iniziare e hai separato quello che sar\u00e0 il tema o la presentazione e quali saranno le funzionalit\u00e0 o i plugin.<\/p>\n<p>Ma invece di avere una manciata di singoli plug-in, cosa accadrebbe se ci fosse un pacchetto di plug-in o micro-plug-in funzionali pi\u00f9 piccoli o come vuoi chiamarli che funzionano per alimentare il pacchetto?<\/p>\n<p>Inoltre, questi sono tutti costruiti sulla stessa base ma condividono anche il codice tra loro e per rendere le cose pi\u00f9 interessanti, scegli di utilizzare un caricatore automatico PSR-4 tramite <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> per occuparti di tutto questo?<\/p>\n<h2>PSR-4 Caricamento automatico dei plugin di WordPress<\/h2>\n<p>Innanzitutto, il modo per pensare a quello che sto cercando di dire (perch\u00e9 chiss\u00e0 se sono chiaro \ud83d\ude43) \u00e8 che hai il tuo lavoro nella <code>wp-content\/plugins<\/code>directory. E il tuo plugin risiede, diciamo, <code>acme-plugins<\/code>e ha sottodirectory per i tuoi micro-plugin.<\/p>\n<p>Lo terremo semplice per questo esempio e diciamo che c&#8217;\u00e8 il plug-in principale e quindi solo un micro-plugin. La directory sarebbe simile a questa;<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-165780-61e788fa5037d.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-165780-61e788fa5037d.png\" alt=\"Come utilizzare i plugin di WordPress per il caricamento automatico di PSR-4\"><\/a><\/p>\n<p>Ora, ci sono i file che ti aspetti di vedere in un plug-in:<\/p>\n<ul>\n<li>LEGGIMI,<\/li>\n<li>LICENZA,<\/li>\n<li>CAMBIAMENTI,<\/li>\n<li>compositore.json<\/li>\n<li>compositore.lock<\/li>\n<li>venditore<\/li>\n<li>il file bootstrap del plugin,<\/li>\n<li>eccetera.<\/li>\n<\/ul>\n<p>Ora ecco il punto: se stai usando <a href=\"http:\/\/www.php-fig.org\/psr\/psr-2\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la PSR-2<\/a> e utilizzerai un caricatore automatico <a href=\"http:\/\/www.php-fig.org\/psr\/psr-4\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PSR-4<\/a>, allora ci sono due cose che devi sapere:<\/p>\n<ol>\n<li>Gli spazi dei nomi devono corrispondere all&#8217;organizzazione della directory. Ne ho parlato un po&#8217; durante <a href=\"https:\/\/wordpress.mediadoma.com\/it\/spazi-dei-nomi-e-caricamento-automatico-in-wordpress\/\" title=\"la mia presentazione di WordCamp Atlanta 2017\">la mia presentazione di WordCamp Atlanta 2017<\/a> (in particolare sotto l&#8217;organizzazione virtuale e logica).<\/li>\n<li>Come lavorare <code>composer.json<\/code>per definire i tuoi caricatori automatici. Puoi leggere molto su questo <a href=\"https:\/\/getcomposer.org\/doc\/01-basic-usage.md#autoloading\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">qui<\/a>, ma dar\u00f2 le note sulla scogliera nel resto di questo post.<\/li>\n<\/ol>\n<p>Quindi il problema \u00e8 che la <code>vendor<\/code>directory risiede a un livello sopra il punto in cui esistono alcuni dei file di origine. Pertanto, il modo standard di impostare un caricatore automatico personalizzato in Composer non funzioner\u00e0.<\/p>\n<p>Ad esempio, \u00e8 molto tipico <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-00-composer-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">vedere questo<\/a> :<\/p>\n<pre><code>{\n  \"name\": \"pressware\/acme-plugins\",\n  \"description\": \"A demo plugin\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Acme\": \"src\/\",\n    }\n  },\n  \/\/ ...\n}<\/code><\/pre>\n<p>Ma per compensare il nostro lavoro, dobbiamo <a href=\"https:\/\/gist.github.com\/tommcfarlin\/c7703a3b7c27594918f0af7a2a7d5fe4#file-01-composer-updated-autoloader-json\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fare questo<\/a> :<\/p>\n<pre><code>{\n  \"name\": \"pressware\/acme-plugins\",\n  \"description\": \"A demo plugin\",\n  \"autoload\": {\n    \"psr-4\": {\n      \"Acme\": \"\",\n      \"AcmeMicroPlugin\": \"MicroPlugin\/src\/\"\n    }\n  },\n  \/\/ ...\n}<\/code><\/pre>\n<p>\u00c8 un semplice cambiamento, ma \u00e8 un semplice esempio, giusto? Allora, qual \u00e8 il vantaggio di questo?<\/p>\n<p>Tieni presente che abbiamo aggiornato alcune modifiche nella\u00a0 posizione di <strong>caricamento automatico<\/strong>. Nello specifico, questo \u00e8 quello che sta succedendo:<\/p>\n<ul>\n<li>Il primo elemento \u00e8 lo spazio dei nomi di primo livello a cui apparterranno tutti i plugin che apparterranno al <strong>plugin Acme<\/strong>.<\/li>\n<li>La seconda voce si riferisce al <strong>MicroPlugin<\/strong> che vedi nella directory ripresa sopra. Questo rappresenta lo spazio dei nomi per questo particolare plugin e dice al Composer di cercare i file di origine da caricare automaticamente usando la directory delle propriet\u00e0<\/li>\n<\/ul>\n<p>Da qui, aggiungerai una nuova voce per il caricatore automatico che corrisponde a ciascun micro-plugin che apparterr\u00e0 al plug-in di primo livello.<\/p>\n<h2>Organizzare i futuri micro plugin<\/h2>\n<p>Esistono alcuni modi in cui puoi gestire l&#8217;organizzazione del codice in modo da poter utilizzare un caricatore automatico predefinito.<\/p>\n<p>Se segui il modello del micro-plugin (per mancanza di un termine migliore), non funzioner\u00e0, quindi devi riorganizzare i tuoi file e questo pu\u00f2 essere un problema nel tempo.<\/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>PSR-4 Il caricamento automatico dei plug-in di WordPress non \u00e8 difficile, ma cosa succede se si desidera utilizzare un plug-in composto da una variet\u00e0 di plug-in e caricarli automaticamente?<\/p>\n","protected":false},"author":1,"featured_media":223885,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[896,814,844,865],"tags":[1168],"class_list":["post-230143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codice","category-plugin-2","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230143","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=230143"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/230143\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/223885"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=230143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=230143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=230143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}