Sviluppo di plugin per WordPress: Creare da zero plugin con funzionalità personalizzate

Leggere in 3 minuti.
2026-03-14
2026-06-03
2,180
Guadagno delle commissioni quando fai acquisti tramite i link qui sotto, senza alcun costo aggiuntivo per te.

Perché scegliere di sviluppare il proprio plugin per WordPress?

Nell’ecosistema di WordPress, i plugin rappresentano il cuore delle funzionalità estensive per un sito web. Sebbene il catalogo ufficiale e i mercati di terze parti offrano un’ampia scelta, lo sviluppo di plugin personalizzati presenta vantaggi unici. Quando i plugin esistenti non rispondono perfettamente alle esigenze del proprio business, presentano problemi di prestazioni o includono funzionalità non necessarie, lo sviluppo su misura rappresenta la soluzione migliore. Questo approccio consente di creare soluzioni leggere e mirate, contenenti soltanto il codice essenziale, migliorando così le prestazioni del sito web.

Ancora più importante è il fatto che i plugin personalizzati offrono un controllo totale sul funzionamento del sistema. È possibile aggiornare le funzionalità in base alle esigenze del progetto, integrare senza problemi API interne o servizi di terze parti, e garantire che il codice rispetti i propri standard di sicurezza e di programmazione. Per i sviluppatori, questo rappresenta anche un’ottima opportunità per comprendere più a fondo l’architettura di base di WordPress, inclusi i suoi meccanismi interni di funzionamento.Hook(Esempio di “hook”: eccellenti pratiche per le operazioni su sistemi e database.) Acquisire competenze nella sviluppo di plugin significa essere in grado di creare soluzioni davvero personalizzate per qualsiasi progetto WordPress.

Costruire la struttura di base del tuo primo plugin

Per creare un plugin per WordPress, si inizia con una directory semplice e un file principale. La struttura di base del plugin costituisce la base su cui verranno sviluppate tutte le funzionalità successive.

Si consiglia di leggere Imparare a sviluppare plugin per WordPress: costruire moduli personalizzati ed efficienti da zero

Creare il file principale del plugin

Tutti i plugin per WordPress devono disporre di un file PHP principale, che contiene delle specifiche annotazioni di intestazione (header comments). Queste annotazioni sono fondamentali affinché WordPress possa riconoscere e gestire correttamente il plugin. Devi quindi assicurarti che il tuo plugin includa tali annotazioni nel file PHP principale.wp-content/pluginsCreare una nuova cartella nella directory, ad esempio.my-first-pluginPoi crea il file principale all’interno di quella cartella.my-first-plugin.php

UltaHost – Hosting per siti WordPress
Garanzia di rimborso entro 30 giorni, larghezza di banda illimitata e accesso ai database, protezione gratuita contro gli attacchi DDoS; sconto del 50% per l’acquisto di un piano valido per 3 anni (da 3 a 4 TB di spazio di archiviazione).

Le note all’inizio del file devono contenere informazioni come il nome del plugin, una descrizione, la versione, l’autore, ecc. Ecco un esempio molto semplice:

<?php
/**
 * Plugin Name:       我的第一个自定义插件
 * Plugin URI:        https://www.yourwebsite.com/
 * Description:       这是一个用于学习WordPress插件开发的自定义插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Dopo aver salvato il file, potrai trovarlo e attivarlo sulla pagina “Plugin” nell’interfaccia di amministrazione di WordPress. Anche se al momento non dispone di alcuna funzionalità, la struttura necessaria è già stata creata.

Organizzare il catalogo dei plugin e i file correlati

Con l’aumento delle funzionalità, una struttura dei file appropriata diventa di fondamentale importanza. Si consiglia di separare i diversi tipi di codice in sottodirectory separate, il che facilita la manutenzione a lungo termine. Un esempio tipico di struttura di una directory per un plugin semplice potrebbe essere il seguente:

my-first-plugin/
├── my-first-plugin.php      // 主文件,包含插件头和管理核心钩子
├── includes/                // 存放核心功能类或函数文件
│   └── class-core-functions.php
├── admin/                   // 后台相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── admin-settings.php
├── public/                  // 前端相关的CSS、JS和PHP文件
│   ├── css/
│   ├── js/
│   └── class-public-handler.php
└── languages/               // 国际化翻译文件(.po/.mo)

Nel file principale.my-first-plugin.phpIn questo contesto, puoi utilizzare…require_onceinclude_onceSi possono importare questi file modulari in base alle esigenze. Questa struttura separa chiaramente la logica di back-end, l’interfaccia grafica di front-end e le funzionalità principali.

Si consiglia di leggere Guida completa e semplice per imparare a sviluppare plugin per WordPress, partendo da zero.

Utilizzare hook e filtri per implementare funzionalità.

L’architettura dei plugin di WordPress si basa su un sistema di “hook” (ganci) attivati dagli eventi, e comprende principalmente:Action(Azione) eFilter(I filtri): Comprenderne il funzionamento e saperli utilizzare è fondamentale nello sviluppo di plugin.

Eseguire un compito tramite gli action hook.

Gli “action hooks” permettono di inserire il proprio codice in momenti specifici del ciclo di vita di WordPress (ad esempio, all’inizializzazione del sito, durante il caricamento della parte grafica del sito, o al salvataggio di un articolo). È possibile utilizzarli per eseguire operazioni personalizzate o aggiungere funzionalità aggiuntive al comportamento standard di WordPress.add_action()La funzione “monta” (ovvero associa) la funzione personalizzata a questi punti di interazione (hook).

Ad esempio, se desideri aggiungere un avviso per gli amministratori in cima alla pagina di gestione del sito web, puoi farlo utilizzando i tool disponibili.admin_noticesQuesto “action hook”: innanzitutto, è necessario definire una funzione nel file principale del plugin.my_custom_admin_noticePoi lo monti sul gancio.

hosting.com Hosting condiviso
Prestazioni elevate con CPU AMD EPYC, storage SSD NVMe e LiteSpeed, supporto interno di esperti 24 ore su 24, 7 giorni su 7, misure di sicurezza avanzate, tra cui SSL, brute force, malware e protezione DDoS, risparmi fino a 73%
// 定义显示通知的函数
function my_custom_admin_notice() {
    echo '<div class="notice notice-success is-dismissible"><p>Il mio plugin personalizzato è stato attivato con successo!</p></div>';
}
// 将函数挂载到 admin_notices 动作钩子
add_action( 'admin_notices', 'my_custom_admin_notice' );

Quando WordPress esegue…admin_noticesIn questo momento, verrà automaticamente chiamata la funzione che hai montato, permettendo così di visualizzare una notifica. Gli action hook (ganci di azione) servono per “eseguire un’azione” e non richiedono il restituto di un valore.

Modificare i dati utilizzando gli hook dei filtri

A differenza degli action hooks, i filter hooks vengono utilizzati per “modificare determinati elementi” del codice. Ti permettono di modificare i dati trasmessi dal core di WordPress, da altri plugin o da temi. Puoi sfruttarli per apportare modifiche al funzionamento del sistema o per personalizzare il comportamento di specifiche funzionalità.add_filter()La funzione viene utilizzata per applicare un filtro.

Un esempio classico è la modifica delle ultime parole del contenuto di un articolo. WordPress offre la possibilità di farlo.the_contentI filtri ti permettono di modificare il contenuto degli articoli che stanno per essere visualizzati.

Si consiglia di leggere Guida completa allo sviluppo di plugin per WordPress: dall’approccio base all’avanzato

// 定义修改内容的函数
function append_custom_text_to_content( $content ) {
    if ( is_single() ) { // 仅对单篇文章页面生效
        $custom_text = '<p><em>Grazie per la lettura! Questo articolo è stato realizzato con il supporto del mio plugin.</em></p>';
        $content .= $custom_text;
    }
    return $content; // 必须返回修改后的内容
}
// 将函数挂载到 the_content 过滤器钩子
add_filter( 'the_content', 'append_custom_text_to_content' );

La funzione di filtro riceve un valore di input (in questo caso…).$contentDopo il trattamento, è necessario restituire un valore. In questo modo, è possibile modificare in modo flessibile quasi qualsiasi dato elaborato da WordPress.

Creare una pagina di configurazione per la gestione degli plugin.

Per i plugin che richiedono configurazioni da parte dell’utente, è essenziale disporre di una pagina di impostazioni amichevole da utilizzare dall’interfaccia di back-end. WordPress offre una serie di API per semplificare la creazione di pagine di menu e di pagine di opzioni.

Hosting condiviso InterServer
Hosting condiviso $2,50 USD al mese, primo mese $0,1 USD codice promozionale tryinterserver, 461 script di applicazioni cloud, installazione con un clic.

Aggiungere un menu principale o un sottome menu

Puoi utilizzare…add_menu_page()La funzione crea un menu di livello superiore indipendente per il plugin nel backend, oppure lo utilizza per…add_submenu_page()Inseriscilo come sottopunto di un menu esistente (ad esempio, “Impostazioni”). Di solito, per farlo è necessario effettuare un’operazione di “montaggio” (mounting).admin_menuSul gancio dell’azione.

Il codice seguente mostra come aggiungere una semplice pagina di impostazioni di livello superiore:

function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',        // 所需权限(管理员)
        'my-plugin-settings',    // 菜单slug(URL标识)
        'my_plugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicons)
        80                       // 菜单位置
    );
}
add_action( 'admin_menu', 'my_plugin_add_admin_menu' );

Successivamente, è necessario definire la funzione di callback.my_plugin_settings_pagePer renderizzare il contenuto HTML della pagina.

Creare un modulo di configurazione e opzioni di salvataggio

WordPressSettings APIFornisce metodi standardizzati per registrare, verificare e salvare le impostazioni in modo sicuro, evitando il trattamento diretto dei dati.$_POSTI dati hanno migliorato la sicurezza.

Prima di tutto, usaregister_setting()Registra un gruppo di impostazioni e utilizzalo.add_settings_section()Aggiungi una nuova area e utilizzala.add_settings_field()Aggiungi i campi specifici. Quindi, all’interno della funzione di callback definita in precedenza, utilizzali.settings_fields()do_settings_sections()Una funzione per visualizzare i dati presenti in un modulo (form).

function my_plugin_settings_page() {
    // 检查用户权限
    if ( !current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html( get_admin_page_title() ); ?></h1>
        <form action="/it/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出必要的安全字段
            settings_fields( 'my_plugin_options_group' );
            // 输出设置区域和字段
            do_settings_sections( 'my-plugin-settings' );
            // 输出提交按钮
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

AttraversoSettings APIPuoi creare facilmente pagine di configurazione che includano campi come caselle di testo, menu a discesa, caselle di controllo e molto altro ancora. Tutti i dati vengono salvati in modo sicuro.wp_optionsNel tabello, è possibile accedere alle informazioni desiderate tramite…get_option()La funzione può essere chiamata sia sul lato front-end che su quello back-end.

Garantire la sicurezza e la manutenibilità del plugin.

Scrivere un plugin solido significa non solo occuparsi dell’implementazione delle funzionalità richieste, ma anche prendere in considerazione aspetti legati alla sicurezza, alle prestazioni del sistema e alla futura manutenibilità del codice. Seguire le migliori pratiche di sviluppo è di fondamentale importanza.

Convalida dei dati, evasione e gestione non sicura

Questa rappresenta la prima linea di difesa per la sicurezza dei plugin. Tutti i dati provenienti dagli utenti o da fonti esterne (ad esempio…)$_GET$_POST$_COOKIEPrima di essere inseriti nel database o visualizzati sulla pagina, tutti i dati devono essere sottoposti a un rigoroso processo di verifica e di “escape” (ovvero devono essere modificati in modo da eliminare eventuali caratteri pericolosi o non conformi agli standard).

Per i dati in ingresso (prima della loro memorizzazione nel database), è consigliabile utilizzare funzioni di validazione.sanitize_text_field()absint()Per pulire i dati, utilizzate funzioni di escape prima di visualizzarli nel browser (dopo averli estratti dal database).esc_html()esc_attr()esc_url()Per prevenire gli attacchi XSS.

// Gestione dell’invio del modulo (esempio: di solito viene gestita dall’API Settings in options.php)
$$user_input = isset($$_POST['my_field']) ? sanitize_text_field($$_POST['my_field']) : '';

// Visualizzazione dei dati ottenuti dal database sul lato client
echo '<div class="info">'`. esc_html( get_option( 'my_saved_option' ) ) `.'</div>';

Inoltre, quando si eseguono query sul database, è necessario utilizzare…$wpdbI metodi forniti dalla classe (ad esempio…)$wpdb->prepare()Vengono utilizzati diversi metodi per prevenire gli attacchi di iniezione SQL.

Implementare il supporto per l’internazionalizzazione e la localizzazione

Per permettere ai tuoi plugin di essere utilizzati da utenti in tutto il mondo, è essenziale supportare la localizzazione (i18n). Ciò significa che tutte le stringhe destinate agli utenti devono essere incapsulate utilizzando le funzioni di traduzione fornite da WordPress.

Usare__()Una funzione per tradurre e restituire una stringa, utilizzando…_e()Una funzione per tradurre e visualizzare direttamente una stringa di testo, definita all’interno della parte iniziale del plugin (header del plugin).Text DomainIl campo di testo deve essere identico a quello utilizzato in questo contesto.

// 错误示例:直接输出英文字符串
echo “Hello World”;

// 正确示例:可翻译的字符串
echo esc_html__( ‘Hello World’, ‘my-first-plugin’ );
// 或者
_e( ‘Hello World’, ‘my-first-plugin’ );

Successivamente, puoi utilizzare strumenti come Poedit per estrarre tutte le stringhe contrassegnate e generare il risultato desiderato..potFile utilizzati dai traduttori per creare versioni del testo in diverse lingue..po.moFile… Mettilo all’interno del plugin.languagesAll’interno della cartella, WordPress caricherà automaticamente le traduzioni corrispondenti in base alla lingua del sito.

Riassumendo

Lo sviluppo di plugin per WordPress rappresenta un processo sistematico che trasforma le idee in funzionalità concrethe. Hai già compiuto il primo passo iniziando dalla creazione di un file principale contenente le note di intestazione standard. Comprendere a fondo e utilizzare gli “action hooks” e i “filter hooks” è fondamentale per conferire al plugin capacità dinamiche, permettendogli di intervenire in modo fluido in ogni fase del funzionamento di WordPress. L’interfaccia di gestione costruita tramite l’API Settings offre un’esperienza di configurazione semplice e intuitiva, contribuendo a migliorare la professionalità del plugin stesso.

Durante l’intero processo di sviluppo, i principi di sicurezza devono essere rispettati costantemente, inclusa una rigorosa verifica dei dati, l’utilizzo dei meccanismi di “escape” (per prevenire interpretazioni errate dei dati) e operazioni standardizzate sul database. Inoltre, il supporto all’internazionalizzazione permette al tuo plugin di essere utilizzato da un pubblico più ampio a livello globale. Seguire una struttura organizzativa chiara dei file (ad esempio, separando il codice di backend, quello di frontend e il codice principale) nonché standard di codifica consolidati, costituisce una base solida per la manutenzione a lungo termine del plugin e per l’espansione delle sue funzionalità. Ricorda: un ottimo plugin non è solo codice funzionante, ma anche una soluzione sicura, efficiente e facile da mantenere.

FAQ - Domande frequenti

Per sviluppare plugin per WordPress, è necessario padroneggiare alcune tecnologie fondamentali. Ecco alcune di queste:

È necessario essere a conoscenza delle basi del linguaggio PHP, poiché i plugin sono principalmente scritti in PHP. Inoltre, è fondamentale comprendere HTML, CSS e JavaScript per costruire interfacce e interazioni sia sul lato client che su quello server. La cosa più importante è padroneggiare il sistema specifico di WordPress, compreso il suo sistema di “hook” (Actions e Filters) e le classi per l’operazione sui database.$wpdbÈ anche utile avere una certa conoscenza dei meccanismi di priorità di esecuzione per i temi e i plugin di WordPress, nonché delle API come l’API di configurazione (Settings API) e l’API REST.

Come debuggare un plugin per WordPress che si è sviluppato personalmente?

Prima di tutto, assicurati che nelwp-config.phpIl file è stato aperto.WP_DEBUGQuesto “modello” permetterà di visualizzare direttamente sul sito web gli errori, gli avvisi e le notifiche generati da PHP. Per utilizzarlo…error_log()Le funzioni possono scrivere le informazioni in file di log personalizzati al fine di tracciare le variabili e i processi. Per le chiamate complesse agli API Ajax o REST, è possibile utilizzare la scheda “Rete” degli strumenti di sviluppo del browser per visualizzare i dati relativi alle operazioni effettuate. Inoltre, esistono molti plugin eccellenti, come “Query Monitor”, che permettono di analizzare in dettaglio le query al database, l’esecuzione dei “hook” e i punti di blocco nel funzionamento del sistema, rappresentando strumenti molto utili per lo sviluppo e il debug.

Dopo aver completato lo sviluppo del plug-in, come posso pubblicarlo nella directory ufficiale di WordPress?

Prima di tutto, è necessario assicurarsi che il codice del plugin sia in linea con gli standard di codifica ufficiali di WordPress e i requisiti relativi alla struttura dei file. Ad esempio, deve contenere un file di configurazione standard.readme.txtDopo aver creato il file necessario, iscriviti a WordPress.org come sviluppatore e invia il tuo plugin per la revisione. Il processo di revisione verificherà la qualità del codice, la sicurezza, l’accordo di licenza (che deve essere compatibile con GPL) nonché la descrizione delle funzionalità del plugin. Una volta superata la revisione, potrai utilizzare lo strumento SVN per inviare il codice del plugin nel repository ufficiale di WordPress. Successivamente, potrai aggiornare le versioni del plugin tramite l’interfaccia di gestione amministrativa.

Qual è la differenza tra aggiungere codice ai file functions.php di plugin personalizzati e di temi?

Aggiungi il codice al tema attuale.functions.phpI file rappresentano un metodo semplice per effettuare test rapidi o per aggiungere funzionalità specifiche a un sito web. Tuttavia, questo approccio presenta degli svantaggi evidenti: le funzionalità sono legate al tema utilizzato, quindi vengono disattivate non appena si cambia tema. Inoltre, il codice è privo di un’adeguata organizzazione (come l’uso di namespace) e può facilmente entrare in conflitto con altri frammenti di codice.

Creare un plugin indipendente significa separare le funzionalità dal tema principale, in modo che queste possano funzionare correttamente indipendentemente dal tema utilizzato. I plugin dispongono di una struttura completa che permette di organizzare meglio il codice, gestire le dipendenze, fornire pagine di configurazione e essere aggiornati in modo autonomo. Sono la scelta ideale per funzionalità che si prevede di riutilizzare, che sono complesse, o che devono essere condivise con altri utenti.