Analisi approfondita: Imparare da zero i fondamenti e le pratiche essenziali dello sviluppo di plugin per WordPress

Leggere in 3 minuti.
2026-03-13
2026-06-04
1,827
Guadagno delle commissioni quando fai acquisti tramite i link qui sotto, senza alcun costo aggiuntivo per te.

La composizione di base di un plugin per WordPress

Un plugin standard per WordPress ha come elemento centrale una componente che si trova… /wp-content/plugins/ Una cartella indipendente all’interno del directory. Questa cartella deve contenere almeno un file PHP principale; le note iniziali di tale file includono le informazioni di metadati dell’plugin, che costituiscono la base per il riconoscimento dell’plugin da parte di WordPress.

Le note presenti nella parte iniziale di un plugin sono di fondamentale importanza. Queste utilizzano un formato specifico per comunicare al sistema WordPress informazioni come il nome del plugin, la descrizione, la versione, l’autore, e altro ancora. Ecco un esempio tipico di nota di avvio di un plugin:

<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://example.com/my-first-plugin
 * Description: 这是一个用于演示的 WordPress 插件。
 * Version:     1.0.0
 * Author:      开发者名称
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Questo codice deve essere posizionato all’inizio del file principale del plugin. Inoltre,Plugin Name Questi campi sono obbligatori; tutti gli altri sono opzionali. Quando WordPress esamina la directory dei plugin, legge queste informazioni per visualizzare l’elenco dei plugin nell’interfaccia di amministrazione in background.

Si consiglia di leggere Sviluppo di plugin per WordPress: dall’approccio base alla maestria: impara passo dopo passo a creare il tuo primo plugin personalizzato

Oltre al file principale, un plugin ben strutturato e funzionale di solito include anche altri file e directory, ad esempio quelle utilizzate per conservare risorse JavaScript e CSS. assets Cartelle, utilizzate per la traduzione. languages Cartella utilizzata per contenere i file delle classi. includes Cartelle, nonché file di template utilizzati per la visualizzazione front-end: una buona struttura dei directory rappresenta la base per la manutenibilità e l’espandibilità di un plugin.

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).

Comprendere i meccanismi fondamentali di WordPress: gli “hook”

La filosofia fondamentale dello sviluppo di plugin per WordPress è basata sui cosiddetti “hook” (ganci) e “callback” (richiami). I hook permettono agli sviluppatori di inserire il proprio codice personalizzato in momenti specifici dell’esecuzione del codice di base di WordPress, modificando o migliorando così le funzionalità predefinite, senza dover modificare direttamente i file principali del sistema. Questo approccio garantisce la pulizia del codice di base di WordPress e la sicurezza degli aggiornamenti dei plugin.

Gli “hook” (ganci) si dividono principalmente in due tipi: gli hook di azione (action hooks) e gli hook di filtro (filter hooks).

L’utilizzo dei “action hooks”

Gli “action hooks” vengono eseguiti quando si verifica un evento specifico, ad esempio la pubblicazione di un articolo, il caricamento di una pagina di gestione o l’accesso di un utente. Non sono progettati per restituire alcun valore, ma servono principalmente per eseguire determinate operazioni. Sono utilizzati dai sviluppatori per automatizzare processi o aggiungere funzionalità aggiuntive al sistema. add_action() La funzione permette di collegare una funzione personalizzata (funzione di callback) a un determinato punto di interazione (hook) dell’applicazione.

Ad esempio, se vogliamo aggiungere automaticamente una dichiarazione di copyright alla fine di ogni articolo, possiamo sfruttare questa funzionalità. the_content Questo “action hook” (sebbene venga spesso utilizzato come filtro, in questo caso viene utilizzato per dimostrare il concetto di azione). Un esempio più tipico è l’esecuzione di un’operazione al momento dell’inizializzazione di WordPress.

Si consiglia di leggere Sviluppo di plugin per WordPress: dall’approccio base alla maestria: impara passo dopo passo a creare le tue funzionalità personalizzate

function myplugin_setup() {
    // 初始化插件,例如创建数据库表
}
add_action( 'init', 'myplugin_setup' );

Il codice sopra indica che, quando WordPress esegue… init Durante questa azione, verranno eseguiti contemporaneamente tutti i componenti o processi che abbiamo definito. myplugin_setup Funzione.

L’utilizzo dei “filter hooks”

Gli “hook” dei filtri vengono utilizzati per modificare i dati. Accettano un valore (una variabile) e restituiscono il valore modificato. Gli sviluppatori li utilizzano per eseguire operazioni di elaborazione sui dati in modo efficiente. add_filter() Esistono funzioni per montare funzioni di filtraggio personalizzate. Questo è il metodo più comune per modificare i contenuti degli articoli, i titoli, i link e altri dati.

Utilizzando l’esempio precedente, per aggiungere le informazioni sul copyright al contenuto di un articolo, la pratica più corretta è quella di… the_content Filtro:

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 myplugin_add_copyright( $content ) {
    if ( is_single() ) {
        $content .= '<p>Il copyright di questo articolo appartiene a questo sito; per ripubblicarlo, è necessario indicare la fonte.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

In questo esempio, la funzione… myplugin_add_copyright Ricevere il file originale… $content La variabile contiene un testo HTML; a questo testo viene aggiunto ulteriore contenuto HTML, dopodiché il risultato modificato viene restituito. WordPress utilizza questo valore restituito al posto del contenuto originale per l’output.

Creare una pagina di gestione dei plugin

Molti plugin richiedono l’aggiunta di opzioni di configurazione nell’interfaccia di back-end di WordPress, il che implica la creazione di pagine di gestione apposite. WordPress fornisce una serie di funzioni per aggiungere elementi al menu principale o ai menu secondari.

Aggiungere un elemento al menu principale

Usare add_menu_page() La funzione può creare un menu di livello superiore indipendente per i plugin, da utilizzare nel backend. Questa funzione richiede diversi parametri, tra cui il titolo della pagina, il titolo del menu, i permessi necessari per l’accesso, un alias per il menu e una funzione di callback.

Si consiglia di leggere Guida introduttiva allo sviluppo di plugin per WordPress: crea la tua prima estensione funzionale da zero.

Ecco un esempio di codice per creare una semplice pagina di gestione di livello superiore:

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

// 定义输出页面内容的回调函数
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>I miei setting per il plugin</h1>
        <form method="post" action="/it/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="it"/></form>
    </div>
    &lt;?php
}

Questo codice inizia innanzitutto… add_action Montare la funzione per aggiungere il menu… admin_menu “Hook”: Viene eseguito quando il menu viene caricato in background. myplugin_add_admin_menuPer registrare un nuovo menu di livello superiore chiamato “I miei plugin”, fate clic su di esso. A seguito di questo gesto, WordPress eseguirà le operazioni necessarie per creare e configurare il nuovo menu. myplugin_settings_page Una funzione viene utilizzata per rendere il contenuto della pagina.

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.

Impostazione dello storage per i campi e le opzioni

Non basta avere solo la struttura della pagina: dobbiamo creare campi nei moduli presenti sulla pagina e memorizzare in modo sicuro i valori inseriti dagli utenti. L’API Settings di WordPress è proprio progettata per questo scopo; consente di automatizzare il controllo dei dati, la loro memorizzazione nonché la generazione di token di sicurezza (nonce).

Innanzitutto, dobbiamo registrare un’opzione di configurazione, un blocco di impostazioni e i campi specifici necessari.

function myplugin_settings_init() {
    // 1. 注册一个设置选项到数据库
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 在页面内添加一个设置区块
    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

// 3. 在区块内添加一个具体的字段
    add_settings_field(
        'myplugin_field_text',
        '示例文本输入',
        'myplugin_field_text_render', // 渲染字段HTML的回调函数
        'myplugin-settings',
        'myplugin_section_main'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 定义字段的HTML输出
function myplugin_field_text_render() {
    $options = get_option( 'myplugin_options' );
    $value = $options['text_field'] ?? '';
    ?>
    <input type='text' name='myplugin_options[text_field]' value='<?php echo esc_attr( $value ); ?>'>
    <?php
}

Attraverso questo API, dopo la submission del modulo, i dati verranno automaticamente salvati. wp_options Nella tabella, il campo denominato… myplugin_options Nel registro (un array serializzato), gli sviluppatori possono utilizzarlo. get_option( ‘myplugin_options’ ) Acquistare questi valori in modo sicuro, sia sul lato front-end che su quello back-end.

Sicurezza dei plugin e migliori pratiche di utilizzo

Per sviluppare un plugin popolare, la sicurezza e la qualità del codice sono aspetti fondamentali da non trascurare. Seguendo le migliori pratiche di programmazione si possono ridurre al minimo le vulnerabilità comuni e migliorare notevolmente l’esperienza d’uso degli utenti.

Convalida dei dati, escape e pulizia dei dati

Tutti i dati provenienti dagli utenti o da fonti esterne sono considerati non affidabili. Prima di visualizzarli nel browser (lato client), è necessario effettuare l’escape per evitare attacchi di tipo Cross-Site Scripting (XSS); inoltre, prima di inserirli nel database (lato server), è fondamentale pulire e verificare i dati.

WordPress fornisce un gran numero di funzioni di supporto. Per i contenuti da visualizzare in HTML, è possibile utilizzare… esc_html(), esc_attr(), esc_url() Funzioni come queste. Per l’output in una variabile JavaScript, utilizzare… wp_json_encode()Nelle operazioni sul database, si dovrebbe sempre utilizzare… $wpdb->prepare() Eseguire una query parametrizzata, oppure utilizzare strumenti come… sanitize_text_field(), intval() Funzioni come queste servono a pulire i dati in ingresso.

// 不安全的做法
echo $_GET['user_input'];

// 安全的做法:输出到HTML内容
echo esc_html( $_GET['user_input'] );

// 安全的做法:用于HTML属性
$url = esc_url( $_GET['url'] );
echo "<a href='/it/$url/'>link (su un sito web)</a>";

// 安全的做法:清理后存入数据库
$clean_title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post_id, ‘title’, $clean_title );

Preparazione per l’internazionalizzazione e la localizzazione

Per permettere agli utenti di tutto il mondo di utilizzare il plugin, è necessario prepararlo adeguatamente per l’internazionalizzazione. Ciò significa che tutte le stringhe destinate agli utenti non devono essere codificate in modo fisso nel codice, ma devono essere racchiuse all’interno di funzioni di traduzione.

WordPress utilizza il framework GNU gettext. Nel codice, questo framework viene impiegato per la gestione delle traduzioni. __() Traduci e restituisci la stringa, utilizzando _e() Traduci e restituisci direttamente la stringa. Inoltre, è necessario definirla nei commenti dell'intestazione del plug-in. Text DomainE utilizzarlo al momento del caricamento del plugin. load_plugin_textdomain() Una funzione per caricare i file di traduzione.

// 定义可翻译的字符串
$greeting = __( ‘Hello, World!', ‘my-first-plugin’ );
_e( ‘Settings saved successfully!', ‘my-first-plugin’ );

// 在插件初始化时加载翻译
function myplugin_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘init’, ‘myplugin_load_textdomain’ );

Gli sviluppatori hanno bisogno di utilizzare strumenti come Poedit per generare il contenuto necessario. .pot File di template, utilizzati dai traduttori per creare versioni del testo in diverse lingue. .po E quello compilato… .mo I file linguistici pronti devono essere posizionati all’interno del plugin. /languages/ All’interno del catalogo… Questo rappresenta un passo fondamentale per l’espansione dei plugin sul mercato internazionale.

Riassumendo

Lo sviluppo di plugin per WordPress rappresenta un processo che trasforma le idee in funzionalità concrete; il suo nucleo risiede nella comprensione e nell’uso efficace del sistema di “hook” (meccanismi di interazione tra moduli del framework). Tutto inizia dalla creazione di un file principale contenente le giuste annotazioni di intestazione. Gli “action hooks” vengono utilizzati per intervenire nel flusso di esecuzione dei programmi, mentre gli “filter hooks” permettono di modificare i dati visualizzati agli utenti. L’API Settings fornita da WordPress consente di creare interfacce di amministrazione in modo sicuro e standardizzato. Rispettare rigorosamente le linee guida di sicurezza (verifica dei dati, escape delle informazioni, pulizia dei codici) nonché le norme di internazionalizzazione rappresenta l’unico percorso per rendere un plugin maturo, stabile e ampiamente utilizzato. Ricordate: un buon plugin non solo deve essere funzionale, ma anche sicuro, efficiente e facile da utilizzare da parte degli utenti di tutto il mondo.

FAQ - Domande frequenti

Quanti file sono necessari almeno per un plugin?

Un plugin richiede almeno un file PHP. Basta che questo file contenga le giuste annotazioni per indicare che si tratta di un plugin per WordPress e che venga posizionato nella directory appropriata all’interno del sito web. /wp-content/plugins/ Posizionandolo direttamente all’interno della directory o in una sottodirectory, WordPress sarà in grado di riconoscerlo e attivarlo.

Come devo debuggare il codice del mio plugin?

Si consiglia di utilizzare l’ambiente di sviluppo per… wp-config.php Abilita il modalità di debug di WordPress nel file. WP_DEBUG La costante è impostata su trueInoltre, è possibile impostare… WP_DEBUG_LOGtrueRegistra i messaggi di errore in… /wp-content/debug.log I file dovrebbero essere evitati di essere visualizzati direttamente sulla pagina. Inoltre, è fondamentale utilizzare gli strumenti di sviluppo del browser per esaminare la console e le richieste di rete.

Dove dovrebbero essere presenti le opzioni per i plugin?

Per la configurazione di semplici coppie chiave-valore, si consiglia caldamente di utilizzare l’API Options di WordPress. add_option(), update_option(), get_option() La funzione esegue le operazioni necessarie e i dati vengono memorizzati in modo sicuro. wp_options Nelle tabelle del database, per gestire grandi quantità di dati strutturati, si può considerare la creazione di tabelle personalizzate. Tuttavia, ciò richiede una gestione più complessa del ciclo di vita di tali tabelle (creazione durante l’installazione e eliminazione al momento dello smontaggio).

Come posso rendere il mio plugin compatibile con più versioni di WordPress?

Durante lo sviluppo, evita di utilizzare funzioni troppo innovative che sono disponibili solo nelle versioni più recenti di WordPress. Per le funzioni più recenti che desideri utilizzare, verifica attentamente le loro compatibilità e le loro caratteristiche prima di impiegarle. function_exists() Eseguire un controllo e fornire una soluzione di degradazione elegante per il plugin. readme.txt Il file specifica chiaramente la versione minima di WordPress per cui i test sono stati ritenuti positivi. Eseguire test regolarmente su diverse versioni di WordPress rappresenta il modo migliore per garantire la compatibilità.