{"id":594,"date":"2026-07-23T10:00:00","date_gmt":"2026-07-23T08:00:00","guid":{"rendered":"https:\/\/aarkly.com\/?p=594"},"modified":"2026-08-08T12:25:09","modified_gmt":"2026-08-08T10:25:09","slug":"wordpress-plugin-development-from-scratch","status":"publish","type":"post","link":"https:\/\/aarkly.com\/it\/wordpress-plugin-development-from-scratch\/","title":{"rendered":"Sviluppo di plugin WordPress da zero: un tutorial passo passo"},"content":{"rendered":"<p class=\"wp-block-paragraph\">Costruire il tuo primo plugin WordPress pu\u00f2 sembrare scoraggiante. Il sistema di hook, le API del database, l'interfaccia admin \u2014 c'\u00e8 molto da imparare. Ma i fondamenti sono sorprendentemente semplici. Un plugin WordPress \u00e8 solo un file PHP con un'intestazione specifica che WordPress riconosce. Tutto il resto \u00e8 costruito su quella base.<\/p><p class=\"wp-block-paragraph\">Questo tutorial ti guida nella costruzione di un plugin WordPress completo da zero, coprendo ogni passaggio dall'intestazione del plugin alla sottomissione a WordPress.org.<\/p><h2 class=\"wp-block-heading\">L'Intestazione del Plugin<\/h2><p class=\"wp-block-paragraph\">Ogni plugin WordPress inizia con un'intestazione. Crea una directory in wp-content\/plugins con il nome del tuo plugin. Crea un file PHP con lo stesso nome. La parte superiore del file deve includere un commento di intestazione con nome del plugin, descrizione, versione, autore e licenza. Questa intestazione dice a WordPress che si tratta di un plugin e lo visualizza nella pagina admin dei plugin.<\/p><p class=\"wp-block-paragraph\">I campi minimi richiesti sono Plugin Name e Version. Aggiungi un campo URI che collega alla homepage del tuo plugin e un Author URI che collega al tuo sito web. Per i plugin inviati a WordPress.org, la licenza deve essere GPLv2 o successiva.<\/p><h2 class=\"wp-block-heading\">Registrare gli Hook<\/h2><p class=\"wp-block-paragraph\">Dopo l'intestazione del plugin, definisci un hook di attivazione e uno di disattivazione. register_activation_hook() esegue il codice quando il plugin viene attivato. register_deactivation_hook() esegue il codice quando viene disattivato. Usa questi hook per impostare le opzioni predefinite, creare le tabelle del database o svuotare le regole di rewrite.<\/p><p class=\"wp-block-paragraph\">Per la funzionalit\u00e0 principale del plugin, agganciati alle azioni e ai filtri di WordPress usando add_action() e add_filter(). L'hook pi\u00f9 comune \u00e8 init, che viene eseguito dopo il caricamento di WordPress ed \u00e8 usato per registrare custom post type, tassonomie e shortcode.<\/p><h2 class=\"wp-block-heading\">Aggiungere una Pagina Admin<\/h2><p class=\"wp-block-paragraph\">La maggior parte dei plugin ha bisogno di una pagina di impostazioni admin. Usa l'azione admin_menu per registrare la tua pagina admin. add_menu_page() aggiunge una voce di menu di primo livello. add_submenu_page() aggiunge un sottomenu sotto un menu esistente. Nella tua funzione callback della pagina, genera l'HTML per la tua pagina di impostazioni.<\/p><p class=\"wp-block-paragraph\">Usa la Settings API per le pagine di impostazioni standard dei plugin. register_setting() comunica a WordPress la tua impostazione. add_settings_section() e add_settings_field() creano i campi del modulo. do_settings_sections() li renderizza nella tua pagina admin. Questa API gestisce automaticamente l'invio dei moduli, la validazione e i messaggi di errore.<\/p><h2 class=\"wp-block-heading\">Creare uno Shortcode<\/h2><p class=\"wp-block-paragraph\">Gli shortcode permettono agli utenti di incorporare le funzionalit\u00e0 del tuo plugin nei post e nelle pagine. Usa add_shortcode() per registrare uno shortcode. La funzione callback riceve gli attributi e il contenuto dello shortcode e restituisce l'output HTML. Tieni semplici le callback degli shortcode \u2014 la logica complessa dovrebbe stare in funzioni helper o classi.<\/p><p class=\"wp-block-paragraph\">Restituisci l'output dalla callback dello shortcode invece di stamparlo. Gli shortcode dovrebbero restituire una stringa che sostituisce il tag dello shortcode nel contenuto del post.<\/p><h2 class=\"wp-block-heading\">Aggiungere Custom Post Type<\/h2><p class=\"wp-block-paragraph\">I custom post type estendono WordPress oltre i post e le pagine. Usa register_post_type() durante l'hook init per registrare il tuo tipo di contenuto personalizzato. Definisci le label, le funzionalit\u00e0 supportate e la struttura degli URL. Registra una tassonomia con register_taxonomy() se hai bisogno di categorizzare gli elementi del tuo custom post type.<\/p><p class=\"wp-block-paragraph\">Svuota le regole di rewrite durante l'attivazione cos\u00ec che gli URL del tuo custom post type funzionino. Aggiungi custom meta box con add_meta_box() per i campi dati aggiuntivi nella schermata di modifica del tuo custom post type.<\/p><h2 class=\"wp-block-heading\">Prepararsi per WordPress.org<\/h2><p class=\"wp-block-paragraph\">Quando il tuo plugin \u00e8 pronto, preparalo per la directory dei plugin di WordPress.org. Crea un file README.txt usando il formato readme dei plugin WordPress. Controlla il tuo codice con PHPCS rispetto agli standard di codifica WordPress. Assicurati che tutte le stringhe di testo siano internazionalizzate con __() e _e(). Aggiungi una licenza e un update URI all'intestazione del plugin.<\/p><p class=\"wp-block-paragraph\">Invia il tuo plugin tramite il modulo di sottomissione dei plugin di WordPress.org. Il team di revisione controller\u00e0 il tuo codice per problemi di sicurezza, conformit\u00e0 agli standard di codifica e documentazione adeguata.<\/p><h2 class=\"wp-block-heading\">Il punto fondamentale<\/h2><p class=\"wp-block-paragraph\">Costruire un plugin WordPress da zero segue uno schema coerente. Inizia con l'intestazione del plugin, aggiungi gli hook per l'attivazione e la disattivazione, crea una pagina di impostazioni admin, registra shortcode e custom post type e prepara il tuo plugin per la sottomissione. Ogni plugin che costruisci seguir\u00e0 questa stessa struttura, con variazioni solo nelle funzionalit\u00e0 specifiche che implementi.<\/p>","protected":false},"excerpt":{"rendered":"<p>Impara a creare un plugin WordPress da zero, dal file principale del plugin fino alla preparazione per l'invio alla directory di WordPress.org.<\/p>","protected":false},"author":3,"featured_media":1173,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_primary_source":"","visibility_scope":"","ai_summary":"","ai_intent":"","ai_related_resources":"","ai_priority":0,"ai_entity_type":"","ai_is_based_on":"","ai_citations":"","ai_mentions":"","ai_speakable_selector":"","ai_chunk_hints":"","footnotes":""},"categories":[7,6],"tags":[44,27,26,35],"ai_visibility":[],"class_list":["post-594","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-development","category-wordpress","tag-api-first","tag-developer-to-founder","tag-plugin-business","tag-saas"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":2,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/594\/revisions"}],"predecessor-version":[{"id":1316,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/posts\/594\/revisions\/1316"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media\/1173"}],"wp:attachment":[{"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/media?parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/categories?post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/tags?post=594"},{"taxonomy":"ai_visibility","embeddable":true,"href":"https:\/\/aarkly.com\/it\/wp-json\/wp\/v2\/ai_visibility?post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}